主页 > 百科知识 > C语言求素数代码

C语言求素数代码

时间:2024-11-29 19:25:19 浏览量:

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 语言编译器中进行编译和运行,然后根据提示输入一个正整数,程序将输出该数是否为素数。

© 转乾企业管理-上海店铺装修报建公司 版权所有 | 黔ICP备2023009682号

免责声明:本站内容仅用于学习参考,信息和图片素材来源于互联网,如内容侵权与违规,请联系我们进行删除,我们将在三个工作日内处理。联系邮箱:303555158#QQ.COM (把#换成@)