C++ 找出 3-100之间的所以素数

#include <iostream.h>
#include <math.h>
void main()
{ int m,i.k;
cout<<'Input m : ";
cin>>m;
k=sqrt(m);
for(i=2;i<=k;i++)
for(3<=m<=100)
if(i>=k)cout<<m<<"is a prime num between 3-100\n";
else cout<<m<<"is not a prime num between 3-100\n";
}

不知道我这样写对不对

这是我写的
#include<iostream>
using namespace std;
#define size 100
void main()
{
bool p[size];
int i;
for(i=3;i<size;i+=2)
p[size]=true;
for(i=3;i<size;i+=2)
if(p[i]){
cout<<"以内的素数有:"<<" "<<i;
for(int j=i+i+i;j<size;j+=i+i)
p[j]=false;
}
}
你写的运行后有些问题
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-17
#include <iostream.h>
#include <math.h>
void main()
{ int m,i,k;
cout<<'Input m : ";
cin>>m;
k=sqrt(m);
for(i=2;i<=k;i++)
{
if(m%k==0)
{
cout<<m<<"is a prime num between 3-100\n";
k=0;
break;
}
}
if(k==0)
cout<<m<<"is not a prime num between 3-100\n";
}
第2个回答  2013-09-17
用筛选法实现的

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

int main(int ac, char** av) {
const MAX = 100;
bool sieve[MAX + 1];

fill(sieve, sieve + MAX + 1, true);
sieve[0] = false;
sieve[1] = false;
for (int n=2; n < sqrt((double)MAX + 1); n++) {
if (sieve[n]) {
for (int j=2*n; j < MAX + 1; j+=n)
sieve[j] = false;
}
}
for(int i = 2; i < MAX + 1; i++) {
if(sieve[i])
cout << i << endl;
}
}