目录
前言
A.建议:
1.学习算法最重要的是理解算法的每一步,而不是记住算法。
2.建议读者学习算法的时候,自己手动一步一步地运行算法。
B.简介:
在C语言中,判断一个数是否为素数的算法通常涉及遍历一定范围内的整数以检查该数是否有其他因子。
一 代码实现
一些基于不同效率和优化程度的C语言实现:
方法一(暴力穷举法)
#include <stdio.h>
bool isPrime(int n) {
if (n <= 1)
return false;
else if (n == 2)
return true;
for (int i = 2; i * i <= n; i++) { // 可以优化到i <= sqrt(n),但这里使用更安全的i * i <= n避免浮点运算
if (n % i == 0)
return false;
}
return true;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPrime(num))
printf("%d is a prime number.\n", num);
else
printf("%d is not a prime number.\n", num);
return 0;
}
方法二(优化至
)
#include <stdio.h>
#include <math.h> // 引入数学库以使用sqrt函数
bool isPrimeOptimized(int n) {
if (n <= 1)
return false;
if (n == 2 || n == 3)
return true;
if (n % 2 == 0 || n % 3 == 0)
return false;
for (int i = 5; i * i <= n; i += 6) { // 只需检查奇数,并且跳过6的倍数
if (n % i == 0 || n % (i + 2) == 0)
return false;
}
return true;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPrimeOptimized(num))
printf("%d is a prime number.\