题目描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
- bool isprime(int a)
- {
- for(int i=2; i<=sqrt(a); i++)
- if(a%i==0) return false;
- return true;
- }
- int main()
- {
- int n;
- int prime1,prime2;
- while(cin>>n)
- {
- if(n<2) return 1;
- else
- {
- for(int i=1; i<=n/2; i++)
- {
- if(isprime(i) && isprime(n-i))
- {
- prime1 = i;
- prime2 = n-i;
- }
- }
- cout<<prime1<<" "<<prime2<<endl;
- }
- }
- return 0;
- }
********附:与整数相邻最近的素数,并输出距离*********************
输入:
3
6
8
10
输出:
5 1
7 1
11 1
【代码】
- bool isprime(int a)
- {
- for(int i=2; i<=sqrt(a); i++)
- if(a%i==0) return false;
- return true;
- }
- int main()
- {
- int num;
- for(int i=num; !isprime(i); i--);
- for(int j=num; !isprime(j); j++);
- if( (num-i) <= (j-num)) //注意条件
- cout<<i<<" "<<num-i<<endl;
- else
- cout<<j<<" "<<j-num<<endl;
- return 0;
- }
-