0

数値が素数かどうかを確認するために、次のコードを作成しました。他にももっと良い方法があることは知っていますが、この方法の何が問題なのか知りたいだけです。数値が素数かどうかは正しく識別していますが、i が素数の場合はセグメンテーション エラーが発生しています。

コード:

#include<stdio.h>
void prime(int);
int main()
{
    int a;
    printf("Enter number\n");
    scanf("%d",&a);
    prime(a);
    return 0;
}

void prime(int a)
{
    static int k=2;
    if((a%k==0)&&(a!=k))
        printf("Not a prime\n");
    else
    {
        k++;                   
        if(a==k)
            printf("Prime\n");     
        prime(a);
    }
}

注: コードを修正しようとすると、else 条件で a==k または k==a-1 を使用しても違いがないことがわかりました。

4

4 に答える 4

6

無限再帰 -> スタック オーバーフロー。

于 2013-04-01T14:39:23.973 に答える