我有一個函數來確定給定的數是否爲素數。我一直在試圖編寫一個函數來查找給定數字後面的下一個素數。問題是它只適用於某些數字。查找下一個素數邏輯錯誤
我幾乎給了它我最好的猜測,所以如果它寫得不好,那就是原因。
# include <stdio.h>
int next(int);
int is_prime(int);
int main()
{
int num;
printf("Enter a number\n");
scanf("%d", &num);
printf("next prime is %d\n", next(num));
return 0;
這接下來就是檢查它的首要
is_prime(int n)
{
int i, test=0;
for (i=2; i<=n/2; i++)
{
if(n%i==0)
{
test++;
break;
}
}
if (test==0)
return 1;
else
return 0;
}
現在函數來檢查下一個素數
int next(int x)
{
int y, i;
for(i=x+1; i>0; i++)
{
if(is_prime(i)==1)
return i;
break;
}
}
我不知道這是否是重要的,但一些在6,10和12, 但是7,8,13和14沒有工作的樣品。
替換'用於(ⅰ= 2;我<= N/2;我++)'與'用於(ⅰ= 2; i * i <= n; i ++)''is_prime(int n)''裏面。 –
爲什麼用eazars的建議,我刪除了'int next(int x)'中的中斷,並且它可以工作。 – Bradg89
是的,隨着我的改變,它會更快。 :)我不是故意的,而是*的答案,對不起,我不清楚。 :) –