注册 登录
编程论坛 C++教室

初学者,从书上抄的!可以运行,但为什么得不到想要的结果??

Laughingsk 发布于 2013-03-23 15:36, 478 次点击
题目:从键盘上输入一个大于等于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;
    }


}
4 回复
#2
gfchen18192013-03-23 20:30
你不知道你哪里错了吗?if(p%i==0);在这里。。。自己看。。。呵呵
#3
gfchen18192013-03-23 20:32
你知道为什么只有小数能显示,因为根本没进入循环,两个flag都还是初始值,
#4
laoniu891172013-03-23 21:10
为什么我在Microsoft Visual Studio 2008怎么运行不了这个程序呢???(新手刚开始研究C++)
1