我无法理解代码如何给出输入的素数因子的输出。这段代码中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
答案 0 :(得分:0)
temp未使用。一旦找到因子,i = 1将检查因子重置为1
答案 1 :(得分:0)
此代码中包含..
i = 1
重置我,因为你想要素数因素..否则,如果它让你增加你将得到像4和6的值..这将是错误的。
不使用
temp = i;
答案 2 :(得分:0)
这里根本没有使用temp
变量。你可以从pgm中删除它。
i=1
已完成,因此可以再次从值2开始检查余数if(number%i==0)
。
答案 3 :(得分:0)
如前所述,临时未使用。
打印素数的方法是反复尝试将数字除以最小数量。这就是i = 1的目的。
所以拿175.
首先,循环初始化为2.然后递增i直到175%i == 0.当发生这种情况时,它意味着我是175的因子。因此它打印i并将i除以175。这可以确保您不会重复计算该因子。在这里,这将首先发生在i == 5.所以现在,num = 175/5 = 35。
此时,i被重置为1.在循环块结束时发生的第一件事是i增加到2.所以现在再次查找最小因子。再次,它找到了5。
如果我没有设置为1,那么程序会继续上升,而且会错过5是175倍的事实。
最终,当我&gt;数字,该程序知道它已找到所有因素。这是因为因素必须小于它们的因素。
希望这有帮助。