# 目的 为什么会写这个,是因为今天的计算机老师出了一道题目,用C语言求出100以内的素数于是乎笔者就开始探索了起来 ## 输出结果 ```c 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ``` ## 前言 素数是计算机科学和数学中非常重要的概念,它的应用范围从密码学到算法设计。本篇博文将通过一段简单的C代码来展示如何找到一定范围内的所有素数。 ## 一、C语言代码详解(简单) #### 代码: ```c #include void main() { int i, j, PN; for (i = 2; i <= 100; i++) { PN = 0; for (j = 2; j < i; j++) { if (i % j == 0) { PN = 1; break; } } if (PN == 0) { printf("%d\n", i); } } } ``` ### 代码解读 #### 1.初始化变量: ```c int i, j, PN; ``` - i:用于遍历从2到100的每一个数。 - j:用于检查当前数 i 是否为素数。 - PN:标识当前数是否为素数,非素数为1,素数为0。 #### 2.循环 (1). 外层循环: ```c for (i = 2; i <= 100; i++) ``` 遍历从2到100的所有整数。 (2). 内层循环: ```c for (j = 2; j < i; j++) { if (i % j == 0) { PN = 1; break; } } ``` 检查 i 是否能被比它小的任意数 j 整除。 如果 i % j == 0,则 i 不是素数,设置 PN 为1,并终止检查。 #### 3. 判断并输出素数 ```c if (PN == 0) { printf("%d\n", i); } ``` 若 PN 保持为0,表明 i 不能被任何比它小的数整除,因此是素数,于是打印输出。 ## 二、C语言代码解读(进阶) #### 代码 ```c #include #include void main() { int i, j, PN; for (i = 2; i <= 100; i++) { PN = 0; for (j = 2; j <= sqrt(i); j++) { if (i % j == 0) { PN = 1; break; } } if (PN == 0) { printf("%d\n", i); } } } ``` #### 1.代码根据 如果一个数 i 不是素数,它至少有一个小于或等于其平方根的因子。 #### 2. 解读 之前的内循环条件是 j < i,现在更改为 j <= sqrt(i)。这是因为,如果 i 不是素数,它的最小因数肯定小于等于 sqrt(i)。 Loading... # 目的 为什么会写这个,是因为今天的计算机老师出了一道题目,用C语言求出100以内的素数于是乎笔者就开始探索了起来 ## 输出结果 ```c 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ``` ## 前言 素数是计算机科学和数学中非常重要的概念,它的应用范围从密码学到算法设计。本篇博文将通过一段简单的C代码来展示如何找到一定范围内的所有素数。 ## 一、C语言代码详解(简单) #### 代码: ```c #include<stdio.h> void main() { int i, j, PN; for (i = 2; i <= 100; i++) { PN = 0; for (j = 2; j < i; j++) { if (i % j == 0) { PN = 1; break; } } if (PN == 0) { printf("%d\n", i); } } } ``` ### 代码解读 #### 1.初始化变量: ```c int i, j, PN; ``` - i:用于遍历从2到100的每一个数。 - j:用于检查当前数 i 是否为素数。 - PN:标识当前数是否为素数,非素数为1,素数为0。 #### 2.循环 (1). 外层循环: ```c for (i = 2; i <= 100; i++) ``` 遍历从2到100的所有整数。 (2). 内层循环: ```c for (j = 2; j < i; j++) { if (i % j == 0) { PN = 1; break; } } ``` 检查 i 是否能被比它小的任意数 j 整除。 如果 i % j == 0,则 i 不是素数,设置 PN 为1,并终止检查。 #### 3. 判断并输出素数 ```c if (PN == 0) { printf("%d\n", i); } ``` 若 PN 保持为0,表明 i 不能被任何比它小的数整除,因此是素数,于是打印输出。 ## 二、C语言代码解读(进阶) #### 代码 ```c #include <stdio.h> #include <math.h> void main() { int i, j, PN; for (i = 2; i <= 100; i++) { PN = 0; for (j = 2; j <= sqrt(i); j++) { if (i % j == 0) { PN = 1; break; } } if (PN == 0) { printf("%d\n", i); } } } ``` #### 1.代码根据 如果一个数 i 不是素数,它至少有一个小于或等于其平方根的因子。 #### 2. 解读 之前的内循环条件是 j < i,现在更改为 j <= sqrt(i)。这是因为,如果 i 不是素数,它的最小因数肯定小于等于 sqrt(i)。 最后修改:2025 年 03 月 31 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 3 如果觉得我的文章对你有用,请随意赞赏