題目來源 http://acm.hdu.edu.cn/showproblem.php?pid=1262
問題描述
尋找素數對
Problem Description
做好了這件實事,就能說明這個猜想是成立的.
由於可以有不同的素數對來表示同一個偶數,所以專門要求所尋找的素數對是兩個值最相近的.
Input
Output
Sample Input
Sample Output
Source
題目分析:對於任意偶數,分解成兩個最接近素數。
解題思路:函數實現,考察素數,從偶數的一半開始,進行偶數的一半減一次循環,如果第i個數和第M-i個數都是素數,結束循環,輸出i和M-i。
代碼實現:
#include<stdio.h>
#include<math.h>
int prime (int m);
int main (void)
{
int M,i;
while(scanf("%d",&M)!=EOF)
{
for(i=M/2;i>1;i--)
{
if(prime(i)!=0)
{
if(prime(M-i)!=0)
{
printf("%d %d\n",i,M-i);
break;
}
}
}
}
return 0;
}
int prime(int m) //判斷素數
{
int i,k;
if(m==1)
return 0;
k=(int)sqrt(m);
for(i=2;i<=k;i++)
{
if(m%i==0)
return 0;
}
return 1;
}