请教编程高手,题目要求在C++中求1000以内的素数。

我写了以下的代码,但运行结果是:1000以内的素数有:1,2,3, ——明显不对。特来求救,望高手指点一二,谢谢!
#include <iostream.h>
void main()
{
int a,i,leap=1;
cout<<"1000以内的素数有:";
for(a=1;a<=1000;a++)
{for(i=2;i<a;i++)
if(a%i==0) leap=0;
if(leap) cout<<a<<",";
}
}

自定义一个素数判断函数,调用该函数对2和1000以内的奇数逐一进行判断,是素数的则输出。举例如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include <iostream>
using namespace std;
bool prime(int n){//定义一个素数判断函数
    int i;
    if(n>2 && !(n&1) || n<2)
        return false;
    for(i=3; i*i<=n;i+=2)
        if(!(n%i))
            return false;
    return true;
}
int main(void){
    int i;
    for(i=2;i<1000;i!=2 ? i+=2 : i++)//逐一判断2和小于1000的奇数
        if(prime(i)) cout << i << ' ';//输出判断为“真”的
    cout << endl;
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2006-09-26
#include <iostream.h>
void main()
{
int a,i,leap;
cout<<"1000以内的素数有:";
for(a=1;a<=1000;a++)
{
leap=1;//在每次重新判断一个数是否素数的时候leap要重置为1
for(i=2;i<a;i++)
if(a%i==0) leap=0;
if(leap) cout<<a<<",";
}
}本回答被提问者采纳
第2个回答  2006-09-26
呵呵,你的leap没有复位
#include <iostream.h>
void main()
{
int a,i,leap=1;
cout<<"1000以内的素数有:";
for(a=2;a<=1000;a++)
{
for(i=2;i<a;i++)
if(a%i==0)
leap=0;
if(leap)
cout<<a<<",";
leap=1;
}
}
这样就可以了。加了leap=1;
第3个回答  2006-09-26
#include<iostream>
using namespace std;
int prime[1000];
int main(){
for(int i=2; i<1000; i++)
prime[i]=1;
for(int i=2; i<34; i++)
if(prime[i])
for(int j=i; i*j<1000; j++)
prime[i*j]=0;
cout<<"1000以内的素数有:";
for(int i=2; i<1000; i++){
if(i>2) cout<<",";
if(prime[i])
cout<<i;
}
cout<<"."
}
第4个回答  2019-01-29
自定义一个素数判断函数,调用该函数对2和1000以内的奇数逐一进行判断,是素数的则输出。举例如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include <iostream>
using namespace std;
bool prime(int n){//定义一个素数判断函数
int i;
if(n>2 && !(n&1) || n<2)
return false;
for(i=3; i*i<=n;i+=2)
if(!(n%i))
return false;
return true;
}
int main(void){
int i;
for(i=2;i<1000;i!=2 ? i+=2 : i++)//逐一判断2和小于1000的奇数
if(prime(i)) cout << i << ' ';//输出判断为“真”的
cout << endl;
return 0;
}

请教编程高手,题目要求在C++中求1000以内的素数。
i+=2 : i++)\/\/逐一判断2和小于1000的奇数 if(prime(i)) cout << i << ' ';\/\/输出判断为“真”的 cout << endl; return 0;}

c++ 1000以内的素数 这个程序哪错了?
把你对变量的初值放when循环里面。不然当第二次循环时采用的是第一次循环后处理的值,而你的意思是要每一次循环都要使i=2,b=true。所以把for语句改为 for(i=2,b=true;i<=sqrt(n);i++)就行了。手机打字不容易啊,如果对了就采纳吧。

用c++编写一个求1000以内的素数及所有素数的个数
include<iostream.h> int main(){ cout<<3<<endl;for(int n=5;n<1000;n=n+2){ for(int i=2;i<=n\/2;i++ ){ if(n%i==0)break;} if((i-1)==n\/2) cout<<n<<endl;} return 0;} 判断素数,是学习c、c++必接触的一个算法。\/\/ AnswerIntheInternet.cpp : 定义控制台应用...

编写一个程序,输出1~1000之内所有的素数(注意:素数即质数)及个数(C语 ...
刚好在做C++,顺便帮你做下,望采纳!#include <stdio.h>main(){int a,i,sum=0;printf("素数:\\n");for (a=1;a<=1000;a++){for (i=2;i<=(a-1);i++)if (a%i==0)break;if (i>=a){sum++;printf("%d\\n",a);}}printf("\\n素数的个数:%d\\n",sum);} 本回答由提问者推荐 举报| 答...

C++ 1000以内的素数求和
include "iostream"using namespace std;int isprime(int n) \/\/判断n是否是素数{ int i; if(n==1) return 0; for(i=2;i<=n\/2;i++) if(n%i==0) return 0; return 1;}int main(){ int i,sum=0; for(i=2;i<=1000;i++) if(isprime(i)==1)\/\/是素数则加到变...

c++ 设计程序找出1-1000中的质数并统计个数 求大神
代码如下:\/ 计算1~N之间的素数,并且打印个数和每一行八个,利用普通法计算,没有用筛选法,速度不快 \/ include<stdio.h> include<stdlib.h> include<math.h> define MAX 10000001\/\/设置数组大小号 define N 1000\/\/选择计算的范围 int prime[MAX];int main(){ int i,j, num= 0;prime[num...

请编程求1000至1500之间的所有素数有几个?并把这些素数显示出来。
int tblLength = 40;\/\/素数表的长度是40,因为40^2=1600>1500 Vector* tbl = getPrimeTable(tblLength);\/\/素数表 Vector* res;\/\/结果 int i;res = getPrime(tbl, 1000,1500);\/\/得到结果 printf("一共有%d个\\n",res->length);\/\/输出结果 for (int i = 0; i < res->length; i++...

编写一个程序,输出1~1000之内所有的素数(注意:素数即质数)及个数(C语 ...
include <stdio.h> include <math.h> void main(){ int n=0, i, j,w,k;for(i=2;i<=1000; i++){ w=1;k=sqrt(i);for (j=2; j<=k; j++)if (i%j==0) {w=0;break;} if (w) { ++n;if (n%10==0) printf("%d\\n",i);else printf("%d\\t",i);} ...

c++ 求1000到2000之间的素数,并且存放到数组中输出。
判断 素数 用函数 int IsPrime(int x) {int i;for (i=2;i*i<=x;i++)if (x % i == 0)return 0;return x > 1;}

c语言:寻找1000以内孪生素数
2; i < y; i++) { if (y % i == 0) c++; } if (c == 0) printf("%d-%d\\n", x, y);}int main(){ int i; for (i = 2; i <= 998; i++) { rsss(i); } getch();} ...

相似回答