查找给定数字是否为素数的函数

时间:2016-03-31 05:20:23

标签: c

我是初学者,我正在学习各种功能。以下是我编写的代码,用于查找给定数字是否为素数。但是当我执行它时,我得到“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;
}

3 个答案:

答案 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也很重要。

相关问题