初学者,从书上抄的!可以运行,但为什么得不到想要的结果??
题目:从键盘上输入一个大于等于6的偶数,将它表示成两个素数之和。如:6=3+2+1,8=3+5。然后我输入18,24的时候没反应,只有num=3+(另一个素数) 才能显示出来。。#include <math.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void main()
{
int i,j,num;
int p,q,flagp,flagq;
std::cout<<"please input a plus integer:"<<endl;
std::cin>>num;
if(num%2!=0||num<=4)
std::cout<<"dota error!please try again!"<<endl;
else
{
p=1;
do{
p=p+1;
q=num-p;
flagp=1;
flagq=1;
for(i=2;i<=(int)(floor(sqrt((double)(p))));i++)
{
if(p%i==0);
{
flagp=0;
break;
}
}
j=2;
while(j<=(int)(floor(sqrt((double)(q)))))
{
if(q%j==0)
{
flagq=0;
break;
}
j++;
}
}
while(flagp*flagq==0);
std::cout<<num<<"="<<p<<"+"<<q<<endl;
}
}