C语言如何高效输出100到200间的素数?

99ANYc3cd6
预计阅读时长 6 分钟
位置: 首页 C语言 正文

C语言输出100到200之间的素数

以下是使用C语言输出100到200之间所有素数的代码:

c语言输出100到200素数
(图片来源网络,侵删)
#include <stdio.h>
#include <stdbool.h>
// 函数声明
bool isPrime(int num);
int main() {
    printf("100到200之间的素数有:\n");
    for (int i = 100; i <= 200; i++) {
        if (isPrime(i)) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}
// 判断一个数是否为素数
bool isPrime(int num) {
    if (num <= 1) {
        return false;
    }
    // 检查从2到sqrt(num)的所有整数
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

代码说明:

  1. isPrime函数:用于判断一个数是否为素数

    • 如果数字小于等于1,直接返回false
    • 检查从2到该数平方根的所有整数是否能整除该数
    • 如果能被整除,则不是素数,返回false
    • 否则是素数,返回true
  2. main函数

    • 遍历100到200之间的所有整数
    • 调用isPrime函数判断每个数是否为素数
    • 如果是素数,则打印该数

优化版本(更高效):

#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool isPrime(int num);
int main() {
    printf("100到200之间的素数有:\n");
    for (int i = 100; i <= 200; i++) {
        if (isPrime(i)) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}
bool isPrime(int num) {
    if (num <= 1) return false;
    if (num == 2) return true;
    if (num % 2 == 0) return false;
    int sqrtNum = (int)sqrt(num) + 1;
    for (int i = 3; i <= sqrtNum; i += 2) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

这个优化版本:

  1. 排除了所有偶数(除了2)
  2. 只检查奇数因子
  3. 使用math.h中的sqrt函数计算平方根

运行结果将输出100到200之间的所有素数,每个素数后面跟一个空格。

c语言输出100到200素数
(图片来源网络,侵删)
c语言输出100到200素数
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
C语言(a)a)是什么?符号含义解析
« 上一篇 今天
Linux下C语言编程具体步骤有哪些?
下一篇 » 今天
取消
微信二维码
支付宝二维码

目录[+]