1. 程式人生 > >1913: 快速查詢素數

1913: 快速查詢素數

題目描述

現在給你一個正整數N,要你快速的找出在2.....N這些數裡面所有的素數。

輸入

給出一個正整數數N(N<=2000000) 但N為0時結束程式。 測試資料不超過100組

輸出

將2~N範圍內所有的素數輸出。兩個數之間用空格隔開

樣例輸入

<span style="color:#333333"><span style="color:black">5
10
11
0</span></span>

樣例輸出

<span style="color:#333333"><span style="color:black">2 3 5
2 3 5 7
2 3 5 7 11
</span></span>

提示

來源

題目智慧推薦

1940 1264 2149 2111 2021 1848 

程式碼:篩法求素數。

#include<stdio.h>
#include<string.h>//memset函式標頭檔案
#include<math.h>//sqrt函式標頭檔案
int main()
{
	int n;
	while(~scanf("%d",&n)&&n)
	{   int a[n+1]; //注意陣列從0開始,多開一個。 
	memset(a,0,sizeof(a));
	a[1]=1;
	for(int i=2;i<sqrt(n);i++)
	{
		if(a[i]==0)
		{
			for(int j=2;i*j<=n;j++)
			{
				a[i*j]=1;
			}
		}
	}
		
	for(int i=1;i<=n;i++)
		{
			if(a[i]==0) {
				a[i]=i;
				printf("%d ",a[i])//if(a[i]==0) {printf("%d ",i)}
				
			}
		}
		printf("\n");
	}
	return 0;
}