c - 仅使用递归计算 c 中的质因数

标签 c

我用 C 语言编写了这个程序来计算素因数,但在打印第一个素因数后它崩溃了,所以我需要帮助

#include<stdio.h>
void prime(int n,int i)
{
    i=2;
    if(n%i==0)
    {
        printf("%d ",i);
        n=n/i;
        prime(n,i);
    }
    else
    {
        i++;
        prime(n,i);
    }
}
void main()
{
    int n;
    scanf("%d",&n);
    prime(n,2);
}

最佳答案

#include<stdio.h>
void prime(int n,int i)
{
    if(n==0)
        ;
    if(n==1)
        ;
    else if(n%i==0){
        printf("%d ", i);
        n=n/i;
        prime(n,i);
    }
    else{
        i++;
        prime(n,i);
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    prime(n,2);

    return 0;
}

如果您添加 n==0n==1 的情况(并删除 i=2;),您一切都会准备就绪。

<小时/>

编辑 - 按照 Jonathan Leffler 的建议删除了无效的 main

关于c - 仅使用递归计算 c 中的质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50625536/

相关文章:

c - 如何声明函数一次传递一个参数 argv[i]?在C中

c++ - 如何开始使用多线程编程?

c - 我无法在窗口平台中使用 pthread

c - mbed uvisor 和以太网接口(interface)溢出

c - 每次迭代都会替换索引中的值

c - 在Linux中,fwrite命令不设置errno,如何在失败情况下获得正确的errno

c - 绕过 scanf 中的 null char

c - 结构内的字符串被覆盖,我不知道为什么

c - C 中的免费链接列表

c - 从 C 中的结构打印 int 数组