2014-09-24 23 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; 
} 
相关问题