注册 登录
编程论坛 VC++/MFC

这个求素数的程序怎么改下就正确了,我初学 C++,望大神指教!!!

中旗人 发布于 2014-11-18 19:18, 522 次点击
#include<iostream>
#include<iomanip>
#include<cmath>
#include<stdio.h>
using namespace std;
int main()
{
    int x,y,z;
    for(x=0;x<=20;x++)
    {
        for(y=0;y<=33;y++)
        {
            for(z=0;z<=100;z++)
            {
                if((x*5+y*3+z/3==100)&&(x+y+z==100)&&(z%3==0))
                    cout<<"cock="<<x<<",hen="<<y<<",chicken="<<z<<endl;
            }
        }
    }
    return 0;
}
5 回复
#2
天使梦魔2014-11-19 10:37
没看懂你的思路。

一般这样:
一个循环用于确定范围
内部一个循环用于排除因素
#3
中旗人2014-11-19 14:39
回复 2 楼 天使梦魔
额,刚刚才发现把题复制错了,这道是百钱买百鸡问题,太抱歉了
#4
thief2014-11-25 22:06
这个是求1000以内的素数,你看看吧
#include <iostream>
using namespace std;
void main()
{
    int m,n;
    int a=0;
    for(m=2;m<=1000;m++)
    {
        for(n=2;n<m;n++)
        {
            if(m%n==0)
                break;
        }
        if(m==n)
        {
            a++;
            cout<<m<<' ';
            if(a==10)
            {
                cout<<endl;
                a=0;
            }
        }
    }
   
}
#5
差不多先申2014-11-27 15:14
回复 4 楼 thief
因为n<m 所以if(n==m)不可以能进入
#6
ql3165132962014-12-16 10:13
楼主的代码 是正确的  只是算法还可以改进
外层循环不动中 里边可以修改为 主要是 n <= sqrt(m)
        bool b(true);
        for( n = 2; n <= sqrt(m); n ++)
        {
            if( m % n == 0 )
            {
                b = false;
                break;
            }
        }
        if( b )
        {
            a ++;
            cout<<m<<' ';
            if(a==10)
            {
                cout<<endl;
                a=0;
            }
        }
1