我一直在研究這個程序來計算兩個值之間有多少個孿生素數,並且已經指定孿生素數以(6n-1,6n + 1)格式出現, (3,5)的例外。我的代碼似乎工作正常,但它不斷給我錯誤的結果.... 1少孿生素數比我應該得到的。在1到40之間,我們應該有5個孿生素數,但我總是得到4.é2個值之間的雙引號錯誤的結果
我在做什麼錯了?我沒有考慮到(3,5)?
這裏是我的代碼:
#include <stdio.h>
int prime (int num) {
int div;
if (num == 2) return 1;
if (num % 2 == 0) return 0;
div = 3;
while (div*div <= num && num%div != 0)
div = div + 2;
if (num%div == 0)
return 0;
else
return 1;
}
int main(void) {
int low, high, i, count, n, m;
printf("Please enter the values for the lower and upper limits of the interval\n");
scanf("%d%d", &low, &high);
printf("THIS IS THE LOW %d\n AND THIS IS THE HIGH %d\n", low, high);
i = low;
count = 0;
while (6*i-1>=low && 6*i+1<=high) {
n = 6*i-1;
m = 6*i+1;
if (prime(n) && prime(m)) ++count;
i = i + 1;
}
printf("Number of twin primes is %d\n", count);
return 0;
}
它完美地對於像圖1和40的間隔和工作的,但不能用於3 10之間3和10中,我應該有2,而不是1雙..但這不是我得到的輸出。 – 2015-02-11 20:31:35
輸入3和10,給出兩對(3,5)和(5,7)。 – 2015-02-11 20:34:33