我写了以下代码来检查数字是否为素数。我知道还有其他的,也许更好的方法来做我,但我只想知道这种方法有什么问题。它正确地识别数字是否为素数,但是如果我是素数,它会给出分割错误。用于检查产生分段错误的素数的代码
代码:
#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);
}
}
注意:在试图修改代码,我发现它没有什么区别,如果你使用== k或K == A-1中的其他条件。
要求人们在代码中发现错误不是特别富有成效。您应该使用调试器(或者添加打印语句)来分析问题,追踪程序的进度,并将其与预期发生的情况进行比较。只要两者发生分歧,那么你就发现了你的问题。 (如果有必要,你应该构造一个[最小测试用例](http://sscce.org)。) –