c - C 中的素数和阶乘

标签 c numbers factorial

我用 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/

相关文章:

c++ - 为什么在 Lisp 中计算 1000 阶乘的速度如此之快(并显示正确的结果)?

在c中创建按钮gtk数组

python - cProfile 和 Python : Finding the specific line number that code spends most time on

php - 生成 [M....N] 范围内的随机数,均值为 X

c# - int e = 0000007 的 toString() 省略所有零。我怎样才能保存它们?

c# - 如何使用库调用在 C# 中计算阶乘?

cppcheck 空指针取消引用,但它实际上可以变成 null

c - 将文本文件中的字符串读取到 char var。然后 c 打印比存储在 char var 上的字符串更长的字符串

c - 错误代码 : %d expected type int, 但参数类型为 int *

t-sql - 如何在sql中计算大组合量