判断素数的算法有很多,这里只是采用了最直接的一种,较为高效的方法叫做筛选法。
关于判断素数的算法这里进行了详细的讨论:http://blog.csdn.net/liukehua123/article/details/5482854。百度也能得到其他很多答案。
#include <stdio.h>
#include <math.h>
#define TRUE 1
#define FALSE 0
int findTwinPrime(int N);
int isPrime(int num);
int main()
{
int N, counter;
scanf("%d",&N);
counter = findTwinPrime( N );
printf("%d\n", counter);
return 0;
}
int findTwinPrime(int N)
{
int num;
int counter = 0; // record the number of twin prime
int previousPrime = 2; // record the previous prime
if( N < 5 )
return counter;// counter = 0;
for (num = 3; num <= N; num += 2) {
if(isPrime(num) && num - previousPrime == 2){
counter++;
previousPrime = num;
}
else if (isPrime(num))
previousPrime = num;
}
return counter;
}
int isPrime(int num)
{
if(num == 2)
return TRUE;
if( num%2 == 0 )
return FALSE;
for(int i = 3; i <= sqrt(num)+1; i += 2)
if(num%i == 0)
return FALSE;
return TRUE;
}