#include <iostream>
#include <math.h>
using namespace std;
bool isPrime(int num)
{
if(num==2)
return true;
if(num%2==0)
return false;
for(int i=3;i<(int)sqrt((double)num)+1;i+=2){
if(num%i==0)
return false;
}
return true;
}
int main()
{
int Primes[1000000],in_data;
memset(Primes,0,sizeof(Primes));
for(int i=2;i<1000000;i++){
if(isPrime(i)){
Primes[i]=1;
}
}
while(true){
cin>>in_data;
if(in_data==0)
break;
for(int m=3;m<=in_data/2;m+=2){
if(Primes[m]==1&&Primes[in_data-m]==1){
printf("%d = %d + %d\n",in_data,m,in_data-m);
break;
}
}
}
return 0;
#include <math.h>
using namespace std;
bool isPrime(int num)
{
if(num==2)
return true;
if(num%2==0)
return false;
for(int i=3;i<(int)sqrt((double)num)+1;i+=2){
if(num%i==0)
return false;
}
return true;
}
int main()
{
int Primes[1000000],in_data;
memset(Primes,0,sizeof(Primes));
for(int i=2;i<1000000;i++){
if(isPrime(i)){
Primes[i]=1;
}
}
while(true){
cin>>in_data;
if(in_data==0)
break;
for(int m=3;m<=in_data/2;m+=2){
if(Primes[m]==1&&Primes[in_data-m]==1){
printf("%d = %d + %d\n",in_data,m,in_data-m);
break;
}
}
}
return 0;
}
之前为for(int i=3;i<(int)sqrt((double)num);i+=2)的时候一直报错,改为 for(int i=3;i<(int)sqrt((double)num)+1;i+=2)就对了
或者改成for(int i=3;i*i<num;i+=2)