簡體   English   中英

在這種情況下如何制作循環?

[英]how to make loop in this case?

我需要計算前100個素數,但是在輸出中我得到“ 9”,其他的數字.......................我想計算前100個質數

{
bool prime; int start, new, kor,k, i,gg;
start=1; 
k=1 ;
gg=0;
do 
{ 

    if (start < 2) {new = 2;}
    if (start == 2) {new = 3;}
    if (start > 2) { 
        if ((new % 2) == 0) 
        new--; 
        do {
            prime  = true; 
            kor=sqrt(new); 
            new+=2;
            for (i=3;prime&& (i<=kor); i+=2) {
                            if (new % i == 0) 
                                prime=false;}
        } while (!prime) ;    
    }  
    gg++;
    printf("%d->%d\n",gg, new);
    k++;
    start++;
    continue;
} 
    while (k<101);

}

我不知道您使用的是哪種語言,所以我正在對此猜測(我無法發表評論)-

您是否在答案中得到所有奇數作為輸出? 9,11,13,15 ...看來您正在打印出所有'new'值,無論是否素數為true。 也許您應該放一個

if (prime) {
    printf("%d->%d\n",gg, new);
}

那里

if (start < 2) {new = 2;}
if (start == 2) {new = 3;}

您有特殊情況,第一個和第二個數字。 下次在do...while循環中,我們跳過for循環,因為kor為1,從而輸出5。我們沒有檢查,所以也許我們很幸運。 聞起來像我們檢查的距離不夠。

下次,之后

kor=sqrt(new1); new1+=2;

kor是2,所以我們再次不執行for循環,並打印7。下次,我們遇到相同的情況。 kor仍然是2,所以您得到9。

認為 ,如果你切換new+=2 kor=sqrt(1); 它會工作。 一旦進入這一部分,您就不必檢查偶數是否是偶數,因為您總是將2加到奇數上。 BTW為什么說continue作為循環中的最后一件事? 這可能會更好(我可以自由地將其放入函數中):

void find_primes()
{
    bool prime; int start, new, kor,k, i,gg;
    start=1; k=1 ;gg=0; 
    do 
    { 
        if (start < 2) {new = 2;}
        if (start == 2) {new = 3;}
        if (start > 2) { 
            do {
                prime = true;
                new+=2;
                kor=sqrt(new);
                for (i=3;prime&& (i<=kor); i+=2) {
                    if (new % i == 0) 
                        prime=false;
                }
            } 
            while (!prime) ;
        }
        gg++; printf("%d->%d\n",gg, new); 
        k++;
        start++;
    }
    while (k<101);
}
here is an example program from: 
    http://www.programmingsimplified.com/c/source-code/c-program-for-prime-number

note: 1 is not a prime number, see:
    http://primes.utm.edu/notes/faq/one.html




#include<stdio.h>

int main()
{
    int n, i = 3, count, c;

    printf("Enter the number of prime numbers required\n");
    scanf("%d",&n);

    if ( n >= 1 )
    {
        printf("First %d prime numbers are :\n",n);
        printf("2\n");
    }

    for ( count = 2 ; count <= n ;  )
    {
        for ( c = 2 ; c <= (i - 1) ; c++ )
        {
            if ( i%c == 0 ) break;
        }

        if ( c == i )
        {
            printf("%d\n",i);
            count++;
        }
        i++;
    }

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM