標記素數法(模板)+素數打表

來源:互聯網
上載者:User

標籤:blog   io   for   ar   div   amp   c++   log   

#include <stdio.h>#include <string.h>#define N 3000000int f[3000000];int main(){memset(f, 0, sizeof(f));int i, j;f[0]=1;f[1]=1;for(i=2; i<=N; i++){if(f[i]==0){for(j=i*2; j<=N; j+=i){f[j]=1; //不是素數}}} // 列印所有發f[i]==0, 即為素數for(i=2; i<=N; i++){if(f[i]==0)printf("%d  ", i );}return 0;}

 

#include <stdio.h>#include <string.h>#include <math.h>#define N 3000000int c=0;int f[3000000];int prime[1000000];int main(){int i, j;    memset(f, 0, sizeof(f));f[0]=1;f[1] =1;for(i=2; i<=N; i++){if(f[i]==0){prime[c++] = i;for(j=2*i; j<=N; j+=i ){f[j]=1;}}}for(i=0; i<=1000; i++){printf("%d  ", prime[i] );}return 0;}

 素數打表法二:

#include<stdio.h>  #include<string.h>  #define N 1000005int prime[100005];  int flag[1000005];  int e;  void getP()  // 素數打表,找出素數存棧  {  int i, j;  e = 0;  memset(flag, 0, sizeof(flag) ); //標記初始化for ( i=2; i<N; i++)  {  if ( flag[i]==0 ) {prime[e++] = i; //進棧  }for ( j=0; j<e && i*prime[j]<N; j++ )  {  flag[ i * prime[j] ] = 1;  }  }  }  

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.