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

我是一个c++新手,求0—1000间的质数,程序错在哪?

fenggaoyuehe 发布于 2010-04-07 18:01, 1140 次点击
#include<iostream>
#include"math.h"
using namespace std;

int main()
{
    int i,j,is_prime;
    is_prime = true;
    cout<<"We will print all prime along 2 and 1000:"<<endl;
   
    for(i=2;i<=1000;i++)
    {
        for(j=2;j<=sqrt((double) i);j++)
        {    if(i%j ==0)
             is_prime =false;
            if(is_prime)
            cout<< i <<"    "<<endl;
        }
    }

    return 0;
}
7 回复
#2
书呆2010-04-07 20:19
程序代码:
for(i=2;i<=1000;i++)
{
    for(j=2;j<=sqrt((double) i);j++)
    {
        if(i%j ==0)
            is_prime =false;
    }
    // 放在外面
    if(is_prime)
        cout<< i <<"    "<<endl;
}
#3
yyblackyy2010-04-07 20:30
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int i,j,k;
    cout<<"We will print all prime along 2 and 1000:"<<endl;
    for(i=2;i<=1000;i++)
    {        k=sqrt(i);
        cout.width(4);
        for(j=2;j<=k;j++)
           if(i%j ==0)
               break;
           if(j==k+1)
               cout<<i<<" is a prime"<<endl;   
        
    }

    return 0;
}
#4
flyingzc2010-04-08 11:17
#include<iostream>
using namespace std;
int main()
{
     int num=1000,i,flag;;
     cout<<2<<" "<<3<<" "<<5<<" "<<7;
     for (i=9;i<num;)
     {        
         for (flag=1;(i%3!=0)&&(i%5!=0)&&(i%7!=0)&&(i%2!=0);)
         {
             flag=0;
             break;
         }
         if(!flag)        
         cout<<" "<<i;        
         i++;
     }
     return 0;
}
#5
asdjc2010-04-13 16:41
is_prime不应该定义为int型。
他们的回答都错了。
三楼的程序写的还行,不过忽略了2;
还有 cout.width(4)使用有问题。
#6
南国利剑2010-04-14 13:37
改成这样就可以了。
代码如下:

#include<iostream>
#include"math.h"
using namespace std;

int main()
{
    bool is_prime(true);
    int i,j;   
    cout<<"We will print all prime along 2 and 1000:"<<endl;
   
    for(i=2;i<=1000;i++)
    {
        for(j=2;j<=sqrt((double) i);j++)
        {   
            if(i%j==0)
            {is_prime=false;break;}
        }
   
        if(is_prime)
            cout<<i<<", ";
        is_prime=true;
    }

    return 0;
}
#7
dht12112010-04-14 19:56
#include <iostream.h>
void main()
{
    int i,j;
    bool isprime;
    cout << "输出0到1000间的数为:" << endl;
    for(i=2;i<=1000;i++)
    {
        isprime=true;
        j=2;
        while(j<=(i/2))
        {
            if(i%j==0)
            {
                isprime=false;
                break;
            }
            j++;
        }
        
        if(isprime)
            cout << " " << i;
        
    }
}
#8
gezuowei2010-04-14 20:09
#include<iostream>
#include"math.h"
using namespace std;

int main()
{
    int i,j;
    bool is_prime(true);
    cout<<"We will print all prime along 2 and 1000:"<<endl;
   
    for(i=2;i<=1000;i++)
    {
        for(j=2;j<=sqrt(i);j++)
        {   
             if(i%j ==0)
             is_prime =false;
            if(is_prime)
            cout<< i <<"    "<<endl;
        }
    }

    return 0;
}
1