我用 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==0
和 n==1
的情况(并删除 i=2;
),您一切都会准备就绪。
编辑 - 按照 Jonathan Leffler 的建议删除了无效的 main
关于c - 仅使用递归计算 c 中的质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50625536/