[Thuật toán] Sàng nguyên tố – Prime number Sieve
[Thuật toán] Sàng nguyên tố – Prime number Sieve Tháng Mười Hai 8, 2014 nguyenvanquan7826 Thuật toán 2 responses Sàng nguyên tố là thuật toán do Eratosthenes đưa ra để tìm các số nguyên tố. Nó có đặc điểm khác với thuật toán ...
[Thuật toán] Sàng nguyên tố – Prime number Sieve
Để tìm các số không phải số nguyên tố chỉ cần dựa vào các số nguyên tố ban đầu, VD số 2 là số nguyên tố thì các số chia hết cho 2 chắc chắn không phải là số nguyên tố, số 3 là số nguyên tố thì tất cả các số là bội của 3 đều bị loại bỏ, cứ như vậy những số được giữ lại là các số nguyên tố.
To find number not prime, only base prime numbers previous. E.g 2 is a prime number, so all number div 2 = 0 is false, 3 is a prime number and all number is multiplier of 3 is false,… Last, numbers remain is prime number we want.
Prime number Sieve
#include <stdio.h>
void primeLessN(int n) {
n = n + 1; // array in C begin by 0, so I add 1 into n
int prime[n];
int j, num;
prime[0] = prime[1] = 0;
// all number div 2 = 0 is false
for (num = 2; num < n; num++) {
if (num > 2 && num % 2 == 0)
prime[num] = 0;
else
prime[num] = 1;
}
// find prime number begin from 3
num = 3;
while (num <= n / 2) {
// find and set false for multiplier of p
for (j = num; num * j < n; j++)
prime[num * j] = 0;
// find next prime number
do {
num += 2;
} while (!prime[num]);
}
// out all prime number smaller n
for (num = 2; num < n; num++)
if (prime[num])
printf("%-3d", num);
}
int main() {
primeLessN(97);
//system ("pause");
return 0;
}