使用vector 模板求素数

来源:互联网 发布:淘宝店铺说手机保修 编辑:程序博客网 时间:2024/06/07 03:04
#include <iostream>
#include <vector>
#include <cmath>

using namespace std;



int main(int argc,char *argv[]){
    
    if(argc!=2){
        cerr<<"Usage:/n/t"<<argv[0]<<" <MaxNum>"<<endl;
        return 1;
    }
    int count=0; //记数
    unsigned int maxnum=atoi(argv[1]);
    vector<unsigned int> primelist;
    vector<unsigned int>::iterator n; //vector 内部指针
    
    primelist.push_back(2); //先放入 2
    
    unsigned int a=2;
    for(;a<0xffffffff;a++){
        unsigned int b=sqrt(a);  //比较开方值来决定
        for(n=primelist.begin();1;n++){ //遍历素数列表
            if(*n>b) break;
            if((a%*n)==0) goto endfor;
        }
        
        primelist.push_back(a);
        
        if(a<=maxnum){
            count++;
            cout<<a<<" ";
        }
        else 
            break;
 endfor:;
    }

    cout<<endl<<count<<endl<<"* End *"<<endl;

    return 0;
}    
原创粉丝点击