2016-11-03 100 views
-2

我需要一個程序,要求用戶輸入數字的一個不確定數和結束輸入與數字0SCANF在輸入每個數字,直到用戶輸入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; 
} 
+0

歡迎計算器。請告訴我們你累了什麼。 –

+0

歡迎來到本網站。只是陳述問題的問題在這裏得不到解答,除非他們表現出最好的嘗試來獨立解決問題。 – dasblinkenlight

+0

這似乎是一個不錯的練習。你有什麼嘗試?你的嘗試是如何工作的?還是不行?你的代碼有什麼問題?此外,我建議你[參觀](http://stackoverflow.com/tour)和[閱讀關於如何提出好問題](http://stackoverflow.com/help/how-to-ask)。 –

回答

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; 
    } 

Return語句原因退出程序。或者嘗試從函數被調用的地方返回。

所以請嘗試上面的代碼。

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; 
}