输出100 200之间的素数的个数,以及所有的素数 C++

输入无输出100->200之间的素数的个数,以及所有的素数。样例输入样例输出21 101 103 ... 197 199

由于100~200间的素数都是奇数,所以可设置一个循环遍历其间的奇数,再考察它们是否有1和自身以外的因子,若无此因子则是素数,输出并计数,最后输出素数个数。代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
for(int t=0,i=101;i<200;i+=2){//遍历100~200间的奇数
for(int n=3;n*n<=i;n+=2)//考察这些数是否有1和自身以外的因子
if(i%n==0)
break;
if(i<n*n){//无上述因子则是素数
cout << i << ' ';//输出这个素数
t++;//素数个数计数
}
}
cout << "\n\nA total of " << t << " prime number above\n\n";
return 0;
}

运行结果如下:

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-28
#include <iostream>
using namespace std;bool isPrime(int num){
for (int i=2; i<num; i++){
if (num%i == 0){
return false;
}
}
return true;
}int main(){
int counter = 0;
cout<<"100到200间的素数为:"<<endl;
for (int i=100; i<=200; i++){
if (isPrime(i)){
cout<<i<<" ";
counter++;
}
}
cout<<endl<<"共"<<counter<<"个"<<endl;
return 0;
}
第2个回答  2013-11-28
#include <stdio.h>
#include <math.h> /* 程序中用到求平方根函数sqrt()*/
void main(void)
{
int i,m,k,n=0;
for(m=101;m<200;m+=2) /* 枚举100~200间的奇数*/
{
k=(int)sqrt((double)m); /* 求m的开平方→k */
for(i=3;i<=k;i++) /* 循环判断m能否被3~k之间所有的整数整除 */
{
if(m%i==0)
{
break; /* 如果m能被i整除,则不是素数,跳出此循环 */
}
}
if(i>k) /* 若m值均不能被小于k的值整除,则为素数*/
{
printf("%5d",m);
n++;
}
if(n%10==0) /*控制每行输出10个数*/
{
printf("\n");
}
}
printf("\n素数的个数为:%d\n",n);
}
第3个回答  2013-11-28
#include "math.h"bool isPrime(int num){ for (int i =2 ; i<=sqrt(num); ++i) { if (num % i ==0) return false; } return true;}void main(){ int counter = 0; for (int i =100; i<=200; ++i) { if (isPrime(i)) { counter++; printf("%d ",i); } }}