我不明白代码是如何给出输入的主要因素的输出..此代码中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/

10-12 01:27