1. 程式人生 > >中醫藥18級新生杯比賽 XP的素數

中醫藥18級新生杯比賽 XP的素數

題目描述
XP最近對素數很痴迷,特別是那些特殊的素數,其中有一類素數被稱為孿生素數。
其定義如下:如果一個數k是素數,k+2也是素數,那麼k和k+2成為一對孿生素數。
請計算一個給定區間m和n(0<m<n)中孿生素數對的個數。

輸入
單組輸入資料
m n
(0<m<n<1000)
輸出
請輸出一行結果:區間[m,n]中孿生素數對的個數
樣例輸入
1 999
樣例輸出
35

思路:判定類似的孿生函式對,可以使用外函式判定解決

#include<stdio.h>
#include<math.h>

int judge(int n)
{   
    int i;
    if(n==1)                 //1不為素數,返回0
		return 0;

	for(i=2;i<=sqrt(n);i++)
	{  
	   if(n%i==0)
		   return 0;
	}
	return 1;
}


int main()
{
    int m,n,i,sum=0;
	scanf("%d%d",&m,&n);
    for(i=m;i<=n-2;i++)
	{
	   if(judge(i)&&judge(i+2)==1) 
		   sum+=1;
	}
    printf("%d\n",sum);
return 0;
}