编写函数isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回整数1,否则返回0

news/2025/2/1 14:03:28/文章来源:https://www.cnblogs.com/htmlww/p/18696272

判断一个数是否为素数是一个基本的数学问题,编写一个函数 isprime来实现这个功能。下面提供一个专业的、优化的C语言代码示例,该函数接收一个整数参数 a,如果 a是素数则返回1,否则返回0。

函数实现

#include <stdio.h>
#include <math.h>// 函数声明
int isprime(int a);// 主函数用于测试
int main() {int num;printf("请输入一个整数: ");scanf("%d", &num);if (isprime(num)) {printf("%d 是素数\n", num);} else {printf("%d 不是素数\n", num);}return 0;
}// 判断素数的函数实现
int isprime(int a) {if (a <= 1) {return 0;}if (a == 2 || a == 3) {return 1;}if (a % 2 == 0 || a % 3 == 0) {return 0;}for (int i = 5; i <= sqrt(a); i += 6) {if (a % i == 0 || a % (i + 2) == 0) {return 0;}}return 1;
}
​
 
 

代码详解

  1. 函数声明

    int isprime(int a);
    ​
     
     

    声明 isprime函数,该函数接收一个整数参数并返回一个整数(1表示素数,0表示非素数)。

  2. 主函数

    int main() {int num;printf("请输入一个整数: ");scanf("%d", &num);if (isprime(num)) {printf("%d 是素数\n", num);} else {printf("%d 不是素数\n", num);}return 0;
    }
    ​
     
     

    在主函数中,首先从用户处读取一个整数,然后调用 isprime函数进行判断,并根据返回值输出相应的结果。

  3. 判断素数的函数实现

    int isprime(int a) {if (a <= 1) {return 0;}if (a == 2 || a == 3) {return 1;}if (a % 2 == 0 || a % 3 == 0) {return 0;}for (int i = 5; i <= sqrt(a); i += 6) {if (a % i == 0 || a % (i + 2) == 0) {return 0;}}return 1;
    }
    ​
     
     
    • 初步判断

      • if (a <= 1): 1及以下的数都不是素数。
      • if (a == 2 || a == 3): 2和3是最小的两个素数。
      • if (a % 2 == 0 || a % 3 == 0): 排除所有能被2或3整除的数。
    • 优化的判断循环

      • 从5开始,每次循环增加6,并检查 a是否能被 i或 i+2整除。这是因为所有素数可以表示为6k±1(其中k是整数)。
      • 只需要检查到 sqrt(a),因为一个大于 sqrt(a)的数的因子必须小于 sqrt(a)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/877565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Tools] GitHub Action 部署文档网站

关于部署网站,理论上来讲,只要你有一个服务器,你要采用什么样的方式来部署都是可以的。但是前提是你需要有一个服务器(物理机、云服务器)。 这节课我们部署文档网站选择使用 github 来进行部署,因为 GitHub 为我们提供了一个免费的服务器,一个账号只有一个,只要你在 Gi…

[Tools] VitePress搭建文档网站

创建 API 文档可以选择如下的 3 种方式:功能较少,可以直接写在 README.md 文件里面 内容较多,可以单独写一个文件 API 数量众多(Vue、React 这种级别),需要考虑单独拿一个网站来做详细的文档支持这里我们要搭建的网站实际上就是一个文档网站,这个时候我们可以选择静态站…

[Tools] 搭建文档网站

创建 API 文档可以选择如下的 3 种方式:功能较少,可以直接写在 README.md 文件里面 内容较多,可以单独写一个文件 API 数量众多(Vue、React 这种级别),需要考虑单独拿一个网站来做详细的文档支持这里我们要搭建的网站实际上就是一个文档网站,这个时候我们可以选择静态站…

java中的HsahMap

HsahMap HashMap 是 Java 中最常用的集合类之一,它实现了 Map 接口,基于哈希表存储键值对 HashMap的存储是无顺序的 HashMap存储的是键值对(key-value)其中键key是唯一的,值(value)可以重复。 HashMap的底层是数组和链表 HashMap的常见方法 添加方法: 1,put(K key, V valu…

MyBatis的增删改查实现

首先还是使用上一篇文章相同的数据表和实体类,如下图所示1 package com.loubin.pojo;2 3 public class User {4 private int id;5 private String name;6 private String pwd;7 8 public int getId() {9 return id; 10 } 11 12 public void …

Reqable:现代化 API 调试工具

Reqable 是一款专为开发者设计的现代化 API 调试工具,旨在简化 API 开发、测试和调试的流程。 它支持多种协议(如 HTTP、HTTPS、WebSocket 等),并提供了丰富的功能,帮助开发者更高效地构建、调试和分析 API 请求与响应。 Reqable 以其简洁的设计、强大的功能和卓越的性能,…

DeepSeek-R1?别信新闻,它真能打败 OpenAI?

Yy DeepSeek-R1?别信新闻 它真的是那个打败 OpenAI 的开源黑马模型,还是又一条假新闻? Fabio Matricardi它真的那么厉害……是在哪方面? 前言:DeepSeek在大模型小型以及优化的道路上探索蒸馏和纯强化学习的路径获得的一点成绩确实让美国人紧张了一把,但同时也招致了更严格…

6.演讲比赛流程管理系统

基于STL的演讲比赛流程管理系统。1.需求2.文件目录3.代码 3.1Speaker.h #pragma once #include<iostream> using namespace std;class Speaker {public:string m_Name;double m_Score[2];};3.2SpeechManager.h #pragma once #include<iostream> #include<vector…

Qwen2.5-VL:更强大的多模态大模型|附实测结果

模型更新简述 几天前,通义千问更新了最新的多模态大模型Qwen2.5-VL,拥有包含 3B、7B 和 72B 在内的 3 个模型尺寸,同时完全开源,可在huggingface和modelscope下载到所有模型权重。 1. 更灵活的时空维度处理 ● 空间维度上,动态地将不同尺寸的图像转换为不同长度的token,并…

第五节上,图像分类实战,食物分类

随机种子固定随机结果,方便复现 def seed_everything(seed):torch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)torch.backends.cudnn.benchmark = Falsetorch.backends.cudnn.deterministic = Truerandom.seed(seed)np.random.seed(seed)o…