I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::


打印100以内的素数

方法一、利用筛选法。

首先定义一个数组a[i]=1,初始化整个数组,全部初始化为1。从2开始,所有2的倍数都标记为0.然后所有3的倍数都标记为0。然后是4,但因为4已经被标记为0了,跳过。然后是5。。。。。直到所有的数都循环一遍。

代码:

#include <iostream>
using namespace std;

int main()
{
    
int a[101], i, j;
    
for(i=1; i<101; i++)
        a[i]
=1;
    
for(i=2; i<101; i++)
    {
        
if(a[i]!=0)
        
for(j=i+i; j<101;)
        {
            
if(j%i==0)
                a[j]
=0;
            j
=j+i;
        }
    }
    
for(i=2; i<101; i++)
        
if(a[i]!=0)
            cout 
<< i << " ";
    
return 0;
}



方法二、
用开根号的办法求值

代码:

#include <stdio.h>
#include 
<math.h>

int main()
{
    
int a[101], i, j, k;
    
for(i=2; i<101; i++)
    {
        k
=(int)sqrt(i);
        
for(j=2; j<=k; j++)
        {
            
if(i%j==0)
                
break;
        }
        
if(j>k)
            printf(
"%d ", i);
    }

    
return 0;
}
posted on 2008-10-30 12:27  jcsu  阅读(1230)  评论(0编辑  收藏  举报