gpt4 book ai didi

java - 不重复的除数/除数之和

转载 作者:行者123 更新时间:2023-12-01 18:16:05 25 4
gpt4 key购买 nike

我在为变量 ab 生成 100-999 范围内的两个数字时遇到问题。当数字b大于a时,随机数生成器应该中断。我需要
a) 检查有多少个不重复的公约数有这个数字
b) 打印变量 ab 中不常见的除数之和
我已经有了生成 var a,b 的代码(具有更大的 b),并且我认为我还有为我提供除数的循环,但似乎没有。< br/>我应该改变什么来提供正确类型的除数?或者其中任何一个 - 因为它效果不好。

谢谢您的回答。

<小时/>
public class Ex3 {
public static void main(String[] args) {
Random rand = new Random();
int a,b;
List<Integer> divider= new ArrayList<Integer>();
while(true)
{
a = rand.nextInt(900) + 100;
b = rand.nextInt(900) + 100;
System.out.println(a + "" + b);
if(b>a) {

for(int i=2;i<a;i++){
if((a % i)==0) divider.add(i);
}
System.out.println(divider.toString());
for(int i=2;i<a;i++){
if((b % i)==0) divider.add(i);
}
break;
}

}
}

}

最佳答案

我相信您想要的是所有公约数,它们可以被划分为每个随机生成的整数值并且不留余数。除数通常从 1 开始,并逐渐(按 1)计算到随机值 a 和随机值 b。当然,检测到的公约数会被存储起来,并在除数搜索完成后显示。

下面示例代码中的第一个 for 循环执行此除数搜索。当您查看循环时,您可以看到与代码的差异。您对应该更改哪些内容以提供正确类型的除数的假设是正确的。

所以,下面的示例代码:

  • 生成 100(含)到 999 之间的两个随机整数值(含)根据您的规范。
  • 确保变量b中的随机整数值更大比变量a中的随机整数值。 while 循环是仅用于此特定目的且仅用于此目的。这循环条件确保b中的值必须大于a 中的值以便退出该循环。
  • 随机值将显示到控制台。
  • for 循环用于针对 a 中的值和值在b中获取公约数。请注意这是如何完成的,付款特别注意 terminationfor 循环的(或称为条件)部分陈述。另请注意 initialization循环语句部分,你可以看到我们初始化了整数变量 i1,而不是 2。存储任何确定的公约数在名为 commonDivisors 的列表接口(interface)对象中。名为 uncommonSum 的整数变量还通过循环代码块中的 else 语句保存所有不常见除数的总和。
  • 公约数显示在控制台窗口中。你会请注意,1 始终是公约数。这才有意义因为任何数字除以一都将等于该数字,而没有余数。
  • 最后,使用for/each循环对公约数求和包含在 commonDivisors 列表中,结果被放置在名为 commonDivisorsSum 的整数变量中,然后显示到控制台窗口。

控制台窗口的示例输出可能如下所示:

Random Numbers:   --> A: 848 | B: 976
Common Divisors: --> [1, 2, 4, 8, 16]
Common Div Sum: --> 31
UnCommon Div Sum: --> 359945

Here is the example code:

int a = new Random().nextInt(999 - 100 + 1) + 100;
int b = 0;

// Loop until the random number in b is greater than in a.
while (a >= b) {
b = new Random().nextInt(999 - 100 + 1) + 100;
}
//Display random generated integer values for A and B.
System.out.println("Random Numbers: --> A: " + a + " | B: " + b);

// Get Common Divisors between the two random integer values...
List<Integer> commonDivisors = new ArrayList<>();
int uncommonSum = 0;
for(int i = 1; i <= a && i <= b; i++) {
if(a % i == 0 && b % i == 0) {
commonDivisors.add(i);
}
else {
uncommonSum += i;
}
}
System.out.println("Common Divisors: --> " + commonDivisors);

// Get an display the sum of Common Divisors
int commonDivisorsSum = 0;
for (int i : commonDivisors) {
commonDivisorsSum = commonDivisorsSum + i;
}
System.out.println("Common Div Sum: --> " + commonDivisorsSum);
System.out.println("UnCommon Div Sum: --> " + uncommonSum);

关于java - 不重复的除数/除数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60365541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com