Algorithm

素数筛选

/*************************************************************************
     File Name: test.c
     Author: cwj
     Mail: 1003214597@qq.com
     Created Time: Sat 14 Oct 2017 07:45:57 PM CST
 ************************************************************************/
 //普通筛选法
#include<stdio.h>
int prime[100000000];
int vis[100000000];
int main()
{ 
   int primeIndex=0;  
   freopen("prime.txt","w",stdout);
    for (int i = 2; i < 100000000; ++i) {
        if(!vis[i])prime[primeIndex++]=i;

        for (int j = i*2; j <100000000; j+=i) {
            vis[j]=1;
        }
    }
   for (int i = 0; i < primeIndex; ++i) {
          printf("%d",prime[i]+" ");
   }
    return 0;
}
//欧拉线性筛选法
#include<stdio.h>
int prime[100000000],vis[100000000];
int main()
{
    freopen("prime.txt","w",stdout);
   //线性素数筛
    int top=0;
    for(int i=2;i<=100000000;i++)
    {
        if(!vis[i])
            prime[top++]=i;
        for(int j=0;j<top&&prime[j]*i<=100000000;j++)
        {
            vis[i*prime[j]]=1;
            if(i%prime[j]==0)break;
        }
    }
    for(int i=0;i<top;i++)
        printf("%d\n",prime[i]);
}
/*************************************************************************
     File Name: C\C++/exercise.cpp
     Author: cwj
     Mail: 1003214597@qq.com
     Created Time: Fri 20 Oct 2017 02:39:30 PM CST
 ************************************************************************/

#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<ctime>
#include<algorithm>
#include<set>
using namespace std;

const int maxn=100+10;

struct Point{
    int x,y;
    Point(int x=0,int y=0):x(x),y(y){}
};
Point operator +(const Point& A,const Point& B){
    return Point(A.x+B.x,A.y+B.y);
}
ostream& operator << (ostream &out,const Point &p){
    out<<"("<<p.x<<","<<p.y<<")";
    return out;
}
template<typename T>
T sum(T*begin,T*end){
    T ans=0;
    for (T*p=begin;p!=end;p++) {
        ans=ans+*p;
    }
    return ans;
}
int A[maxn];
int temp[10000000];
int main(int argc, char *argv[])
{
    srand(time(NULL));
    vector<int> x;
    x.push_back(20);
    for(vector<int>::iterator i = x.begin(); i != x.end(); ++i){
        printf("%d \n",x.size());      
    }
    set <int> seta;
    for (int i = 0; i < 100; ++i) {
     seta.insert(rand());
    }
    int index=0;
    for (set<int>::iterator it=seta.begin();it!=seta.end();++it) {
        cout<<*it<<"\n";
        index++;
    }
    cout<<index<<" ";

 /*   for (int i = 0; i < 10000000; ++i) {
        x.push_back(rand());
    }

    for (int i = 0; i < 1000000; ++i) {
        temp[x[i]]++;
    }*/
    /* for (int i = 0; i < 100000000; ++i) {
         if(temp[i]!=0){
             
         }
     
     }*/

   // sort(x.begin(),x.end());    
/*   for (int i = 0; i < 1000000; ++i) {
        printf("%d ",x[i]);
    }*/
    printf("\n Time used = %.6f \n", (double)clock() / CLOCKS_PER_SEC);
    Point a,b(1,2);
    a.x=3;
   // cout<<a+b<<endl;
    Point point[3]={Point(1,5),Point(45,4),Point(4,56)};
    cout<< sum(point,point+3)<<" \n";
   /*用string读取一整行,求和
    string line;
    while(getline(cin,line)){
        int sum=0,x;
        stringstream ss(line);
        while(ss>>x)sum+=x;
        cout<<sum<<"\n";
    }*/



    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容