添加多个用户输入的因子

时间:2016-02-12 00:40:31

标签: java

我正在尝试添加用户提供的数字的所有因素。例如,如果用户输入5,则输出应为:“5的因子之和为6”。 我无法弄清楚如何添加这些数字。这是我尝试过的:

Student

1 个答案:

答案 0 :(得分:2)

您的代码中存在逻辑错误。你基本上每次都要重置总和,而不是累积地将这些因子加在一起给你一个总计。因此,在循环的最后一次迭代中,您将获得最后检查的数字,加上一个。要修复错误,请删除以下行:

sum = i + 1;

并在if条件中添加此行:

sum += i;

代码应如下所示:

int i = 1;
int count = 0;
int sum = 0;
while(i <= num) 
{
   if(num % i == 0)
   {
       System.out.println(i + " is a factor of "+num+".");
       count++;
       sum += i;
   }
   i++;
}  

System.out.println(num+" has "+count+" factors.");
System.out.println("The sum of all of the factors of "+num+" is "+sum);        

我刚验证n=5的输出是:

1 is a factor of 5.
5 is a factor of 5.
5 has 2 factors.
The sum of all of the factors of 5 is 6

但是5是素数。这是一个更有趣的例子,有更多因素:n=8

1 is a factor of 8.
2 is a factor of 8.
4 is a factor of 8.
8 is a factor of 8.
8 has 4 factors.
The sum of all of the factors of 8 is 15

注意:您的算法可以进行优化。提示:当您找到一个因子时,您可以通过将输入数除以它来轻松确定另一个因子。我将剩下的优化留给你作为练习。享受!