扫描输入中的每个数字,直到用户输入0

时间:2016-11-03 11:00:57

标签: c scanf prime-factoring

我需要制作一个程序,要求用户输入不确定的数字,并以0号结束输入。

输入后,我需要对输入中的每个数字进行素数分解。

我现在有这个,但它只适用于输入的第一个数字,然后结束程序。

int main()
{        
    long long number,div;       
    while(scanf("%lli",&number)==1){
        printf("The prime factors of %lli are: \n",number);

        div = 2;

        while(number!=0){
            if(number%div!=0)
                div = div + 1;
            else {
                number = number / div;
                printf("%lli ",div);
                if(number==1)
                    break;
            }
        }
        printf("\n");
        return 0;
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

      int main()
      {        
          long long number,div;       
          while(scanf("%lli",&number)==1){
         printf("The prime factors of %lli are: \n",number);

         div = 2;

        while(number!=0){
            if(number%div!=0)
               div = div + 1;
           else {
              number = number / div;
              printf("%lli ",div);
               if(number==1)
                break;
            }
        }
      printf("\n");
   // return 0;   // you should remove this return as it cause to exit the program 
     }
     return 0;
  }

返回语句导致退出程序。或者尝试从调用函数的地方返回。

所以请尝试上面的代码。

答案 1 :(得分:0)

将循环条件扩展为0:

int main()
{
    long long number,div;       
    int loop = ( 1 == scanf("%lli",&number) ) && ( 0 != number );
    while( loop )
    {
        printf("The prime factors of %lli are: \n",number);
        // ..
        printf("\n");
        loop = ( 1 == scanf("%lli",&number) ) && ( 0 != number );
    }
    return 0;
}