输入一个大于等于6的偶数,将它表示为两个素数之和(输出所有组合)
要求:用自定义函数int prime(int n)来判断n是否为素数
#include <iostream>
#include <algorithm>
using namespace std;
bool S_shu(int n)
{
int i;
int tmp = sqrt(n);
for (i = 2; i <= tmp; i++)
{
if ((n % i) == 0)
{
return false;
}
}
return true;
}
int main()
{
int p;
while (cin >> p)
{
int left = p / 2; //中值左边的数
int right = p - left; //中值右边的数
//左边或右边的值不是素数,继续向两边找
while (!S_shu(left) || !S_shu(right))
{
left--;
right++;
}
int n = left;
int m = right;
cout << n << endl;
cout << m << endl;
}
system("pause");
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:输入一个大于等于6的偶数,将它表示为两个素数之和(输出所有组合)
要求:用自定义函数int prime(int n)来判断n是否为素数
#include <stdio.h>
int prime(int n)
{
if(n<2)
return 0;
for(int i=2;i*i<=n;i++)
return 0;
return 0;
}
int main()
{
int n;
scanf("%d",&n);
for(i=2;i<n;i++)
if(isprime(i) && isprime(n-i))
{
printf("%d=%d+%d",n,i,n-i);
break;
}
return 0;
}