C++用筛法求100内素数

用筛法求100以内素数,什么叫筛法????????????????????????????????????????????????????

筛法就是像筛子一样,把不是素数的数字(合数)删掉,剩下的就是素数

http://baike.baidu.com/link?url=r3Ouf94Xqd4QOn3nh__IKft1mStNk3cSFmwq63UfZ9S_VGCzwtf_Znqie7L8d-smjxeSjJV3sp2wyds4ZZCQvsrj1mIPCIJkJ3Z9gX12qY2eyTLXzkRQMePzXysKa-BrPbgVAmSDhWnCTV2M9vziva

这里有更详细的解释和例子程序

 #include<iostream>  

#include<iomanip>  

#include<cmath>  

using namespace std;  

int main()  
{  
    cout<<"100以内的全部素数:"<<endl;  

    int i,j,k;  

    int a[101];  

    for(i=1;i<=100;i++)  
    {  
        a[i]=i;  
    }  

    a[1]=0;               //先挖掉a[1]  

    for(i=2;i<sqrt(100);i++)  
    {  
        for(j=i+1;j<=100;j++)  
        {  
            if(a[i]!=0&&a[j]!=0)  
            {  
                if(a[j]%a[i]==0)  
                {  
                    a[j]=0;           //把非素数挖掉,不是素数的都赋值为0  
                }  
            }  
        }  
    }  

    cout<<endl;  

    for(i=1,k=0;i<=100;i++)      
    {  
        if(a[i]!=0)              //选出值不为0的数  即素数  
        {  
            cout<<setw(5)<<a[i];  

            k++;  
        }  

        if(k==10)      //输出10个数后换行  
        {  
            cout<<endl;  
            k=0;  
        }  
    }  

    cout<<endl;  

    return 0;  
}  

应该在学c的时候就接触了吧

百度筛法求素数 csdn会出来好多

用一个flag数组标记某个数是否是素数,初始值设为true,0和1就设为false(不设也没关系,用不到)
从2开始枚举,当遇到flag[i]=true时,将所有100以内该 i 的倍数x,做如下操作flag[x]=false
这样就能找出100以内的素数了
(其中 x = i * n,内层循环枚举1到无穷,调节是i * n <= 100 就行了)

#include

#include

#include

using namespace std;

int main()

{

cout<<"100以内的全部素数:"<<endl;

int i,j,k;  

int a[101];  

for(i=1;i<=100;i++)  
{  
    a[i]=i;  
}  

a[1]=0;               //先挖掉a[1]  

for(i=2;i<sqrt(100);i++)  
{  
    for(j=i+1;j<=100;j++)  
    {  
        if(a[i]!=0&&a[j]!=0)  
        {  
            if(a[j]%a[i]==0)  
            {  
                a[j]=0;           //把非素数挖掉,不是素数的都赋值为0  
            }  
        }  
    }  
}  

cout<<endl;  

for(i=1,k=0;i<=100;i++)      
{  
    if(a[i]!=0)              //选出值不为0的数  即素数  
    {  
        cout<<setw(5)<<a[i];  

        k++;  
    }  

    if(k==10)      //输出10个数后换行  
    {  
        cout<<endl;  
        k=0;  
    }  
}  

cout<<endl;  

return 0;  

}