2014-09-24 22 views
1

編寫一個程序繼續讀取正整數 直到遇到素數。假設至少輸入一個號碼。編寫程序繼續輸入,直到素數

例如,

請輸入#:8
請輸入#:9
請輸入#:10
請輸入#:11
感謝您輸入的黃金,再見。

我現在面臨的主要問題是延續到素數發生。一定要考,如果數字是主要的代碼是在這裏:

// PRIME NUMBER TEST 
#include <stdio.h> 

int main() { 

    int number, n, is_prime = 0; 

    printf("Enter number: "); 
    scanf("%d", &number); 

    for (n=2; n<=number/2; n++) { 

     if (number%n==0) 
      is_prime = 1; 

     while(is_prime == 1) { 
       printf("Enter #: "); 
       scanf("%d", &number); 

    } 
    } 


    if (is_prime == 0) 
     printf("%d is a prime number.\n", number); 

    system("PAUSE"); 
    return 0; 
} 

我知道,這將是一個for循環,直到原發生繼續下去,只是初始化計數器,但由於某種原因,我只是不能做對。謝謝您的幫助。

+0

歡迎的StackOverflow !總是發佈你迄今爲止的代碼,並且非常詳細地說明它是不是正確的。儘可能包括你嘗試過的東西,不管他們是否工作。 – 2014-09-24 03:15:04

+0

發佈的代碼位於粘貼bin鏈接中。我試圖做一個while循環,例如:while(is_prime == 1),然後重新提示用戶輸入數字。 – Rise 2014-09-24 03:17:10

+0

我在您發佈的代碼中看不到一個while循環.. – Blorgbeard 2014-09-24 03:18:36

回答

2

你需要走,雖然你的代碼,並檢查您的每個循環不變的,那就是我的意思是我的意見,你對-while循環內而外....

// PRIME NUMBER TEST 
#include <stdio.h> 

int main() { 
    bool is_prime = false; 
    while(is_prime == false) { 
     int number, n; 
     printf("Enter #: "); 
     scanf("%d", &number); // scanf is not recommended, but use it here anyway 

     is_prime = true; // we assume so for now, also test for numbers < 2 
     for (n=2; n<=number/2; n++) // this can be optimized, but leave as is anyway 
      if (number%n==0) 
       is_prime = false; // sorry it was not prime 

    } 
    printf("%d is a prime number.\n", number); 
    return 0; 
} 
相關問題