编程语言求素数怎么求

时间:2025-01-26 04:24:58 网络游戏

求素数的方法有很多种,以下是一些常用的算法:

试除法

基本思路:从2开始,遍历到给定数字的平方根,检查该数字是否能被遍历到的任何数字整除。如果能被整除,则该数字不是素数;如果遍历结束后都没有找到能整除的数字,则该数字是素数。

代码示例(C语言):

```c

include

include

int is_prime(int n) {

if (n <= 1) return 0;

for (int i = 2; i <= sqrt(n); i++) {

if (n % i == 0) return 0;

}

return 1;

}

int main() {

int start = 100;

int end = 200;

for (int num = start; num <= end; num++) {

if (is_prime(num)) {

printf("%d ", num);

}

}

return 0;

}

```

埃拉托斯特尼筛法

基本思路:创建一个从2到n的列表,标记所有数字为素数,然后从2开始,将它的所有倍数标记为非素数,接着找到下一个未被标记的数字,将其标记为素数,并将其所有倍数标记为非素数,如此循环直到遍历完所有数字。

代码示例(C语言):

```c

include

include

include

void sieve_of_eratosthenes(int n) {

bool is_prime[n + 1];

memset(is_prime, true, sizeof(is_prime));

is_prime = is_prime = false;

for (int i = 2; i * i <= n; i++) {

if (is_prime[i]) {

for (int j = i * i; j <= n; j += i) {

is_prime[j] = false;

}

}

}

for (int i = 2; i <= n; i++) {

if (is_prime[i]) {

printf("%d ", i);

}

}

}

int main() {

int n = 200;

sieve_of_eratosthenes(n);

return 0;

}

```

米勒-拉宾素性测试

基本思路:这是一种概率性算法,通过随机选择基数并进行一系列模运算来判断一个数字是否为素数。虽然它是概率性的,但通过多次测试可以提高准确性。

代码示例(C语言):