2015-11-09 49 views
-1

我正在製作一個程序,用戶輸入介於2和1000000之間的正整數,如果它是素數,則會打印出「數字是質數」如果它不是素數,它將打印數字的分解。我試圖在我的因素之間放置乘法符號,但無法弄清楚! (即:用戶輸入24,程序輸出2 2 2 3,我希望它輸出2x2x2x3)。有任何想法嗎?我一直在試圖爲年齡如何在我的答案中獲得乘法符號(素因子分解)

#include <stdio.h> 
int main() 
{ 
    int N, a, divide, flag=0; 
printf("Please enter a positive integer "); 
    scanf("%d",&N); 
    if (N<2||N>1000000) 
    { 
    printf("Error!"); 
    return 0; 
    } 
    for(a=2;a<=N/2;++a) 
{ 
    if(N%a==0) 
    { 
     flag=1; 
     break; 
    } 
} 
if (flag==0) 
    printf("The number %d is a prime number.", N); 
else 
    { 
    printf("The number %d is not a prime number.\nThe prime factors of %d are:",N, N); 

divide = 2; 

while(N!=0&&flag==1){ 
    if(N%divide!=0) 
     divide = divide + 1; 
    else { 
     N = N/divide; 
     printf("%d",divide); 
     if(N==1) 
      break; 
     } 
    } 
} 

    return 0; 
} 
+1

現在有什麼問題?額外的'x'?因此,分割循環,以便以不同的方式處理最後一次迭代。 –

+0

它的打印,但有一個額外的'x' – Haris

+0

'如果(N == 1) break; else printf(「x」);'而不是'if(N == 1) break; – BLUEPIXY

回答

0

如果你翻領的問題,您需要打印一個「X」 之前你的號碼,APPART爲一日一。

所以只需要一個int first=1;。在循環加:

if (first) { 
    first = 0; // no more 1st loop 
} else { 
    printf("x"); // print a "x" before printing the next number 
} 
0

只要改變你的printf

printf("%d%c", divide, (N > 1) ? 'x' : '\n'); 

其打印 '\ n'(回車)如果你在最後一次迭代,或 'X',如果你」不是。