簡體   English   中英

C中的質數和階乘

[英]Prime and Factorial in C

我用c編寫了一個程序,它給了我錯誤的輸出。 任務是打印每個小於等於10000000的質數,該質數等於另一個乘數正負1的階乘。

這是我的代碼:

#include <stdio.h>
#include <stdlib.h> 
#include <math.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int prime( int k) 
{ 
    int i ; 
    for (i=2; i<=sqrt(k)+1 ; i++) 
    { 
        if (  (k%i) ==0 )   
        { 
            return 0 ; 
        }      
    } 
    return 1 ; 
} 

int paragontiko( int k) 
{ 
    int s;
    int i ; 
    s=1;

    for (i=2; i<=k ; i++) 
    { 
        s=s*i;
    } 
    return s;
}

int main(int argc, char *argv[]) 
{
    int k;
    int i;
    for (i=2;i<=10000000;i++)
    {
        if (prime(i))
        {
            for (k=2;paragontiko(k)<=i;k++)
            {
                if (paragontiko(k)+1==i) printf("%d\n",i);
                if (paragontiko(k)-1==i) printf("%d\n",i);
            }
        }
    }
    return 0;
}

當我運行它時,它只打印數字3(等於2!+1)和7(等於3!+1)。 但是5(等於3!-1)呢? 等等

提前致謝

這是這種情況:

    for (k=2;paragontiko(k)<=i;k++)

如果i = 5,paragontiko(3)= 6,那么您就不會陷入循環。 條件應為:

    for (k=2;paragontiko(k) - 1 <=i;k++) 
for (k = 2; paragontiko(k) <= i; k++) 

在這行上,當k為3時,循環終止,因為階乘為6

for (k = 2; paragontiko(k) <= i; k++)

暫無
暫無

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

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