网站首页 手机版
 注册 登录
您现在的位置: 畅无忧设计 >> 系统编程 >> C++ >> 正文
最新文章
· 在VB中用DAO实现数据库编程
热门文章
 在VB中用DAO实现数据库编程
相关文章
没有相关文章
C++使用筛选法求100以内的素数
来源:csdn博客 更新时间:2010/8/26 11:00:06 阅读次数:
字体:[ ] 我要投稿

C++使用筛选法求100以内的素数,具体问题分析及其代码如下:

【问题分析】

我们可以把100个数看作是沙子和石子,素数是石子,非素数的是沙子,弄个筛子,将沙子筛掉,剩下的就是素数。
1至100这些自然数可以分为三类:

 (1) 单位数:仅有一个数1.

 (2) 素数:这个数大于1,且只有它本身和1这样两个正因数。

 (3) 合数:除了1和他自身以外,还有其他的正因数。

【代码如下】

/********************************************************
/* 程 序 名:素数筛选
/* 编程时间:2009年7月27日
/* 主要功能:求素数
*********************************************************/
#include<iostream>
using namespace std;//编译命令
#include<math.h>
const int MAX=100;//定义常量MAX
int main()//主函数
{
 int prime[MAX+100]={0};//定义变量并初始化
 int i,j,k=sqrt(MAX);
 for(i=2; i<=k; i++)//枚举筛数
 {
  if(prime[i]==0)//如果这个数没被筛,就看看
  {
   j=i*2;//将原数扩大二倍初始化给j
   do
   {
    prime[j]=1;//将j筛掉
    j+=i; //再扩大一倍
   }
   while(j<=MAX);//直到最大
  }
 }
 for(i=2; i<=MAX; i++)
 {
  if(prime[i]==0)//循环输出
   cout<<i<<" ";
 }
 cout<<endl;
 return 0;//主函数结束
}

【运行结果】

 

  • 上一篇文章:
  • 下一篇文章:
  • 关于我们 - 联系我们 - 广告服务 - 在线投稿 - 友情链接 - 网站地图 - 版权声明
    CopyRight 2008-2010, CWYDESIGN.COM - 畅无忧设计, Inc. All Rights Reserved
    滇ICP备09005765号