我是初学者,我正在学习各种功能。以下是我编写的代码,用于查找给定数字是否为素数。但是当我执行它时,我得到“project.exe已停止工作”的对话框。我正在使用dev c ++。我的代码有什么问题吗?
#include<stdio.h>
int prime (int i);
int main()
{
int a,b;
scanf("%d",&a);
b=prime(a);
if (b==1)
printf("prime");
else
printf("not prime");
return 0;
}
int prime (int i)
{
int j=0;
for (j=0;j<=i;j++)
{
if (i%j==0)
break;
}
if (j==i)
return 1;
else
return 0;
}
答案 0 :(得分:1)
更改主要功能的代码块:
int j=0;
for (j=0;j<=i;j++)
{
if (i%j==0)
break;
}
为:
int j;
for (j=2;j<=i;j++)
{
if (i%j==0)
break;
}
当你试图找到mod
时,它实际上试图通过除法运算找到它。您不能将数字除以零,因为j
最初为零,程序正在崩溃。
答案 1 :(得分:1)
它应该从2
开始,而不是从0
开始。 0
导致除以零,这导致程序停止的原因。正确的是:
int j;
for (j=2;j<i;j++)
{
if (i%j==0)
break;
}
if (j==i)
return 1;
else
return 0;
// or simply return j == i;
答案 2 :(得分:0)
您需要返回一个不是一个值的值。像这样......
int prime (int i) {
int j;
if (i <=3) return 1;
for (j=2;j<i/2;j++)
if (i%j==0) return j;
return 1;
}
检查数字i
是否大于3也很重要。