C语言实现
在C语言中,我们可以使用一种简单的方法,即遍历每个数并检查它是否能被小于它的任何数整除。如果都不能,则它是素数。下面是一个简单的C语言实现:
c复制代码 #include <stdio.h> #include <stdbool.h> bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i * i <= n; i++) { if (n % i == 0) return false; } return true; } int main() { printf("100以内的素数有:\n"); for (int i = 2; i <= 100; i++) { if (isPrime(i)) { printf("%d ", i); } } return 0; }
Python实现
在Python中,我们可以使用类似的逻辑,但是Python的语法更简洁,并且Python内置了丰富的库,但在这里我们将使用基本的循环和条件判断。
方法1:基本循环和条件判断
python复制代码 def is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True print("100以内的素数有:") for i in range(2, 101): if is_prime(i): print(i, end=' ')
方法2:使用列表推导式(更简洁)
虽然列表推导式本身不直接减少计算量,但它可以使代码更简洁和Pythonic。
python复制代码 def is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True print("100以内的素数有:", [i for i in range(2, 101) if is_prime(i)])
注意:在Python和C语言的实现中,我们都使用了优化,即只检查到sqrt(n)。这是因为如果n有一个因子大于它的平方根,那么它必定有一个小于或等于它的平方根的因子。这样可以显著减少不必要的检查,提高算法的效率。