[英]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.