我不明白代码是如何给出输入的主要因素的输出..此代码中temp变量的用途是什么?另一个问题是代码片段中i = 1的目的是什么?
#include<stdio.h>
int main()
{
int number,i,temp;
scanf("%d",&number);
if(number<0)
{
printf("%d = -1 x ",number); //just printing
number=number*-1; //multiplication by -1
}
else
{
printf("%d = ",number); //just printing
}
for(i=2;i*i<=number;i++)
{
if(number%i==0)
{
printf("%d x ",i);
number=number/i;
temp=i;
i=1;
}
}
printf("%d\n",number);
return 0;
}
sample input:100
sample output:100 = 2 x 2 x 5 x 5
sample input:20
sample output:20 = 2 x 2 x 5
最佳答案
如前所述,temp未使用。
打印质数的方法是反复尝试将数除以最小数。那就是i = 1的目的。
因此,取175。
首先,将循环初始化为2。然后将i递增,直到175%i ==0。发生这种情况时,这意味着i是175的因数。因此它将打印i并将175除以i。这样可以确保您不会重复计算因子。在这里,这将首先针对i == 5发生。因此,现在,num = 175/5 = 35。
此时,i重置为1。循环块末尾发生的第一件事是i递增为2。因此,现在再次寻找最小的因子。再次找到5。
如果我未设置为1,则程序将继续运行,并且会错过5是175的两倍的事实。
最终,当i>数字时,程序便知道已找到所有因素。这是因为因子必须小于因子的数量。
希望这可以帮助。
关于c - 无法理解代码片段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24836962/