1. 程式人生 > >演算法---快速查詢質數

演算法---快速查詢質數

其實,找一個質數,很簡單啊,就是全部遍歷一次嘛,

但是!
我們這裡講一下,快速求解的辦法好吧!

對於給定的一個數,求解這個數內的所有質數!

首先,對於一個數n,只要它根號n內的數,不能整除它,那麼它就肯定是zh質數,因為這個是乘法交換律,ab=ba,哈哈哈

然後呢,我們對於N個數內,我們可以直接pai'排除點,前面基數的倍數,

程式碼如下:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
#define N 1000
int main() {
	int i, j;
	int prime[N + 1];
	//對N內數進行標記,其實,也可以反標記,這樣就不用初始化了;
	for (i = 2; i < N; i++) {
		prime[i] = 1;
	}
	for (i = 2; i*i <= N; i++) {
		if (prime[i] == 1) {
			for (j = 2 * i; j <= N; j++) {
				//檢驗這個數 J 是不是質數; 順帶把I的倍數全部幹掉,這個很有意思,for迴圈是反著的
				if (j%i == 0) {
					prime[j] = 0;
				}
			}
		}
	}
	//輸出內容,N內的質數;
	for (i = 2; i < N; i++) {
		if (prime[i] == 1) {
			cout << i << endl;
		}
	}
	cout << endl;
	system("pause");
	return 0;
}