当前位置: 首页 > news >正文

2025-03-04 学习记录--C/C++-C语言 判断是否是素数

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

C语言 判断是否是素数

一、代码 ⭐️

#include <stdio.h>
#include <stdbool.h> // 使用 bool 类型

// 判断是否是素数的函数
bool isPrime(int num) {
    if (num <= 1) {
        return false; // 1 和负数不是素数
    }
    if (num == 2) {
        return true; // 2 是素数
    }
    if (num % 2 == 0) {
        return false; // 偶数(除了 2)不是素数
    }

    // 检查从 3 到 sqrt(num) 的奇数
    for (int i = 3; i * i <= num; i += 2) {
        if (num % i == 0) {
            return false; // 如果能被整除,则不是素数
        }
    }
    return true; // 否则是素数
}

int main() {
    int num;

    // 输入一个整数
    printf("请输入一个整数: ");
    scanf("%d", &num);

    // 调用函数判断是否是素数
    if (isPrime(num)) {
        printf("%d 是素数。\n", num);
    } else {
        printf("%d 不是素数。\n", num);
    }

    return 0;
} 

在这里插入图片描述

二、部分代码分析 ⭐️

for (int i = 3; i * i <= num; i += 2) {
     if (num % i == 0) {
         return false; // 如果能被整除,则不是素数
     }
}

因为质数是只能被 1和它本身 整除的数,如果num不是质数的话,那么它应该就可以表示成a*b=num。如果ab都大于num的平方根的话,那么a*b就会大于num。就和前面a*b=num矛盾了。所以说a或者b肯定有一个是小于或等于num的平方根。因此for循环那里i*i<=num,后面那个i+=2是为了保证每次检查的num都是奇数,因为偶数除了2以外,必然不是质数。
如果一个数能通过平方根得出一个整数值,那么这个数肯定不是质数。所以那里的条件应该是i<=根号num。但是有可能是无理数,就不好比较啦。就通过i*i<=num来实现。

在这里插入图片描述

相关文章:

  • stable-diffusion-webui 加载模型文件
  • sql调优(oracle):优化响应时间(优化sql) / 优化吞吐量; 高斯调优
  • 一、OpenGL的原理解析
  • FreeRTOS 源码结构解析与 STM32 HAL 库移植实践(任务创建、删除篇)
  • Windows 10/11 系统下 Git 的详细安装步骤和基础设置指南
  • Foxglove 介绍以及入门使用教程
  • 【AI深度学习基础】Pandas完全指南终极篇:构建企业级数据工程与AI应用 (含完整代码)
  • Spring40种注解(下)!!
  • 【图像识别做UI自动化第一章】UI自动化代码设计思路
  • 【Go】Go viper 配置模块
  • Golang的微服务服务发现机制
  • 人工智能-Python基础-导学-01
  • scala 中的泛型
  • RocketMQ启动教程
  • C++中的无锁编程
  • 深度学习代码解读——自用
  • zabbix配置邮件告警
  • 使用pytorch和opencv根据颜色相似性提取图像
  • 2025-03-04 学习记录--C/C++-PTA 习题5-5 使用函数统计指定数字的个数
  • Golang语法特性总结
  • 自己用模板做网站/百度今日数据
  • 闵行网站建设/厦门seo代运营
  • 网站必须做公安部备案吗/2022年最火的关键词
  • 怎么知道网站是php/想要推广页
  • 建立网站培训讲义/百度seo排名优化
  • wordpress插件使用数量/seo网络推广专员