篩法求素數(C語言/C++)
阿新 • • 發佈:2019-02-12
什麼是素數
定義
在大於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);
}