1. 程式人生 > >篩法求素數(C語言/C++)

篩法求素數(C語言/C++)

什麼是素數

定義

在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。

C語言實現判斷素數

int prime(int x)
{
  for(int i=2;i*i<=x;i++)
  {
    if(x%i==0)
      return 0;
  }
  return 1;
}

這個程式碼應該是很好理解的
但是如果讓我們求n以內的素數的話,這種方法就會很慢
所以請大家看下面一節的內容

篩法求素數

#include <stdio.h>
#include <iostream>
#include <cmath>
#include <string.h> using namespace std; bool f[1000005]; int main() { int n; scanf("%d",&n); f[1]=false; for(int i=2;i<=n;i++) f[i]=true; for(int i=2;i<=n;i++) { if(f[i]==true) { for(int j=2;j*i<=n;j++) f[i*j]=false; } } for(int i=2;i<=n;i++) if
(f[i]) printf("%d ",i); }