分享免费的编程资源和教程

网站首页 > 技术教程 正文

用这个简单的C语言程序,你可以轻松统计小于n的质数的数量

goqiw 2025-03-14 16:57:34 技术教程 3 ℃ 0 评论

学习工控知识,就来工控小新

农历十一月十七日 2023/12/ 29

往期推荐

2023年12月27日,每日花费一分钟练习C语言

2023年12月28日,每日花费一分钟练习C语言

每日一练

/ Daily Exercises

题目:统计所有小于非负整数n的质数的数量

题目分析

题目要求我们统计所有小于非负整数n的质数的数量。质数是指只能被1和自身整除的正整数,例如2,3,5,7等。我们可以用一个循环来遍历从2到n-1的所有整数,对每个整数判断是否是质数,如果是,就累加一个计数器。判断一个整数是否是质数的方法有多种,最简单的一种是用一个内层循环遍历从2到该整数的平方根的所有整数,看是否有能够整除该整数的因子,如果有,就说明该整数不是质数,否则就是质数。这种方法的时间复杂度是O(n*sqrt(n)),空间复杂度是O(1)。


程序展示

根据上述的分析,我们可以用以下的C语言程序来实现题目的要求。该程序在VC6.0的环境下运行正常,输入一个非负整数n,输出小于n的质数的数量。

#include 
#include 
// 判断一个整数是否是质数的函数
int is_prime(int x)
{
    int i;
    // 如果x小于2,返回0,表示不是质数
    if (x < 2)
        return 0;
    // 如果x等于2,返回1,表示是质数
    if (x == 2)
        return 1;
    // 如果x是偶数,返回0,表示不是质数
    if (x % 2 == 0)
        return 0;
    // 从3到x的平方根遍历所有奇数,看是否有能够整除x的因子
    for (i = 3; i <= sqrt(x); i += 2)
    {
        // 如果有,返回0,表示不是质数
        if (x % i == 0)
            return 0;
    }
    // 如果没有,返回1,表示是质数
    return 1;
}
// 主函数
int main()
{
    int n, i, count = 0;
    // 输入一个非负整数n
    printf("请输入一个非负整数n:\n");
    scanf("%d", &n);
    // 遍历从2到n-1的所有整数,判断是否是质数,如果是,累加计数器
    for (i = 2; i < n; i++)
    {
        if (is_prime(i))
            count++;
    }
    // 输出小于n的质数的数量
    printf("小于%d的质数的数量是%d\n", n, count);
    return 0;
}



程序测试

为了验证我们的程序是否正确,我们可以用一些测试用例来检验。

编译程序,输入一个非负整数:10。

经过计算,得出小于10的质数是数量是4个


源代码获取

#软件下载通道#



我用夸克网盘分享了「20231229」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。

链接:
https://pan.quark.cn/s/9442f025e37f

(链接和提取码建议复制粘贴,手动输入容易出现错误)

#支持一下#

分享整理,测试发布不易 如果您方便的话可以帮忙点一下↓↓

谢谢大家!



下期题目

题目:

克隆图

给你无向连通(
https://baike.baidu.com/item/连通图/6460995?fr=aladdin)图中一个节点的引用,请你返回该图的深拷贝(
https://baike.baidu.com/item/深拷贝/22785317?fr=aladdin) (克)。

图中的每个节点都包含它的值 val (int) 和其邻居的列

表 (list[Node])。

class Node f

public int val;

public List neighbors;

}



点赞加关注,学习不迷路

工控小新

学习工控知识就来工控小新,为你提供工控笔记知识:EPLAN电气绘图 | TIA博图基础 | CAD | C语言教学 | 单片机基础 | 三菱PLC ... 每日持续更新中

#头条创作挑战赛#

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表