求100之内的素数

简介: 求100之内的素数

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有一个因子大于它的平方根,那么它必定有一个小于或等于它的平方根的因子。这样可以显著减少不必要的检查,提高算法的效率。


image.png

相关文章
|
3月前
|
机器学习/深度学习
一个偶数总能表示为两个素数之和
【7月更文挑战第7天】一个偶数总能表示为两个素数之和。
32 1
|
16天前
求100之内的素数
求100之内的素数。
36 13
|
5月前
40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
43 5
|
5月前
|
存储
1013 数素数
1013 数素数
35 0
1013 数素数
|
5月前
|
机器学习/深度学习
一个偶数总能表示为两个素数之和。
一个偶数总能表示为两个素数之和
28 0
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
85 0
L1-046 整除光棍 (20 分)567
L1-046 整除光棍 (20 分)567
127 0
L1-046 整除光棍 (20 分)567
|
C语言
求十个数中最大的数
C语言求十个数中最大的数流程图
60 0
求十个数中最大的数
L1-046 整除光棍 (20 分)
L1-046 整除光棍 (20 分)
125 0
7-176 求n以内最大的k个素数以及它们的和 (20 分)
7-176 求n以内最大的k个素数以及它们的和 (20 分)
417 0