gpt4 book ai didi

c - C 中的素数和阶乘

转载 作者:行者123 更新时间:2023-11-30 17:37:12 27 4
gpt4 key购买 nike

我用 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++) 

关于c - C 中的素数和阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com