C语言求素数代码
for(c=2;c<=b;c++) if(a%c==0)break; -- 这是一句。
c从2 起,2,3,4,5。。到b, 依次去除 a,
a%c==0 -- 如果 (除法 求余数)余数是 0 ,就是 除尽了,它不是素数
break; --一旦 除尽了 就 break, 也就是 结束 循环。这时的 c 循环到多少就等于多少,不会大于 b.
如果 (除法 求余数)余数是始终 不是 0, 直到 b 也没除尽。循环结束。
出循环体时,由于 c++, c 增 1。c 最大值 不超过 b+1.
接下来 if(c>=b+1) 就是判断上面循环 状态,到底 循环到 几。
满足c>=b+1 是 素数, 否则 不是。
显然 c >= b+1
以下是一个简单的C语言代码示例,用于求出10到100之间的所有素数 [❶](https://cloud.tencent.com/developer/article/1751025) [❷](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711) [❹](https://blog.csdn.net/BJYX_L/article/details/132146944) [❽](https://blog.csdn.net/weixin_73383175/article/details/128228041)。
```c
#include<stdio.h>
int main()
{
int i, j, count = 0;
for(i = 10; i <= 100; i++)
{
for(j = 2; j <= sqrt(i); j++)
{
if(i % j == 0)
break;
}
if(j > sqrt(i))
{
count++;
printf("%d\t", i);
if(count % 10 == 0)
printf("\n");
}
}
printf("共有%d个素数\n", count);
return 0;
}
```
这段代码的主要思路是:
1. 使用外层for循环遍历10到100之间的所有整数。
2. 在内层for循环中,从2开始,到整数i的平方根结束。这是因为一个数的因子最多不会超过它的平方根,如果在这个范围内没有找到能整除的数,那么这个数就是素数 [❷](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711) [❹](https://blog.csdn.net/BJYX_L/article/details/132146944)。
3. 如果在内层循环中找到了一个能整除i的数,那么就跳出内层循环。
4. 如果在外层循环结束后,内层循环都没有跳出,那么说明i是素数,将其加入素数的计数中,并打印出来。
5. 每打印出10个素数,就换一行,以便于查看结果。
这段代码的优化之处在于,在内层循环中,只需要检查到整数i的平方根,而不是全部的数,这大大减少了计算量 [❷](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711) [❹](https://blog.csdn.net/BJYX_L/article/details/132146944)。
以下是一个用C语言求素数的简单代码示例:
#include <stdio.h>
int isPrime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
def main() {
double n, i;
cin >> n;
srand(); // 随机生成一个正整数种子,保证每次运行程序都是随机的
i = isPrime(17); // 当输入为17时,返回1,因为17是素数
cout << "素数个数:" << i << endl;
sleep(1); // 暂停一下,控制输出速度
cin >> n; // 清空输入缓冲区,重新输入下一个数字
sleep(1); // 清空缓存区,控制输出速度
cout << "素数个数:" << i << endl;
sleep(1); // 清空缓存区,控制输出速度
cin >> n; // 清空缓存区,重新输入下一个数字
sleep(1); // 清空缓存区,控制输出速度
cout << "素数个数:" << i << endl;
sleep(1); // 清空缓存区
素数指的是大于 1 的自然数,除了 1 和自身外,没有其他正因数的数。
以下是一段用 C 语言编写的求素数的代码:
#include <stdio.h>
// 判断一个数是否为素数的函数
int is_prime(int n) {
// 如果数字小于等于 1,则不是素数
if (n <= 1) {
return 0;
}
// 从 2 开始循环到 sqrt(n) + 1
for (int i = 2; i <= sqrt(n) + 1; i++) {
// 如果 n 能被 i 整除,则不是素数
if (n % i == 0) {
return 0;
}
}
// 如果循环结束都没有被整除,则是素数
return 1;
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
// 调用 is_prime 函数判断输入的数是否为素数
if (is_prime(n)) {
printf("%d 是一个素数。\n", n);
} else {
printf("%d 不是一个素数。\n", n);
}
return 0;
}
在这个程序中,我们首先定义了一个名为 is_prime 的函数,用于判断一个数是否为素数。该函数使用一个循环来检查从 2 到该数平方根加 1 的所有数,如果该数能被这些数整除,则它不是素数,函数返回 0;否则,它是素数,函数返回 1。
在 main 函数中,我们首先提示用户输入一个正整数,然后调用 is_prime 函数来判断这个数是否为素数。根据 is_prime 函数的返回值,我们输出相应的结果。
你可以将代码复制到 C 语言编译器中进行编译和运行,然后根据提示输入一个正整数,程序将输出该数是否为素数。
其他文章
- 张国荣感情语录
- 乌当中学怎么样
- 黄家驹的AMANI是什么意思
- yu是声母韵母还是整体认读
- 什么是农业示范园
- 嘉睿的意思 佳睿的意思 晟睿的意思
- 雄姿英发是什么意思
- 怎么仿写诗歌
- 短时评怎么写
- 厕所里的搞笑诗
- 陌上初熏 是什么意思
- 什么叫戏歌
- 成语成语什么化雨
- 青岛大学胶州校区介绍
- or的中文是什么意思
- 关于童年的诗
- Hanson或Hansen做英文名怎样
- 引吭高歌读音
- 饺子的来历和由来
- 相的组词有哪些词语
- 乌衣巷的解释
- 用 勤 组成的词语有哪些
- 阜阳市城郊中学怎么样
- 去海边穿什么鞋儿童
- 十九繁体
- 硫酸雾化学式
- 你们知道味字可以组什么词吗
- 美人鱼怎么画
- 艾子教孙 文言文翻译
- 黑龙江财经大学怎么样