6-2 使用函数求素数和

news2024/9/22 4:12:18

 

分数 20

全屏浏览题目

切换布局

作者 张高燕

单位 浙大城市学院

本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。

素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。

函数接口定义:

 

int prime( int p ); int PrimeSum( int m, int n );

其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[mn]内所有素数的和。题目保证用户传入的参数mn

裁判测试程序样例:

 

#include <stdio.h> #include <math.h> int prime( int p ); int PrimeSum( int m, int n ); int main() { int m, n, p; scanf("%d %d", &m, &n); printf("Sum of ( "); for( p=m; p<=n; p++ ) { if( prime(p) != 0 ) printf("%d ", p); } printf(") = %d\n", PrimeSum(m, n)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

-1 10

输出样例:

Sum of ( 2 3 5 7 ) = 17

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

我的答案:

分析过程

这道题目要求判断一个数是否是素数并计算给定范围内所有素数的和。所以我们首先需要一个函数来判断一个数是否是素数,然后用另一个函数来计算素数的和。

  1. 判断素数

    • 所有小于2的整数都不是素数。
    • 2是最小的素数。
    • 对于大于2的数,如果它有一个小于或等于它平方根的因子,那么它就不是素数。
  2. 计算素数和

    • 遍历m到n之间的所有整数,使用prime函数判断每个数是否是素数。如果是,就累加到总和中。

解题过程

C语言:

#include <stdio.h>
#include <math.h>

// 判断是否是素数的函数
int prime(int p) {
    if (p < 2) return 0; // 小于2的数不是素数
    if (p == 2) return 1; // 2是素数
    if (p % 2 == 0) return 0; // 除2外的偶数不是素数
    int sqrtP = (int)sqrt(p);
    for (int i = 3; i <= sqrtP; i += 2) { // 只考虑奇数作为可能的因子
        if (p % i == 0) return 0;
    }
    return 1;
}

// 计算m到n之间所有素数的和
int PrimeSum(int m, int n) {
    int sum = 0;
    for (int i = m; i <= n; i++) {
        if (prime(i)) {
            sum += i;
        }
    }
    return sum;
}

int main() {
    int m, n, p;

    scanf("%d %d", &m, &n);
    printf("Sum of ( ");
    for (p = m; p <= n; p++) {
        if (prime(p) != 0)
            printf("%d ", p);
    }
    printf(") = %d\n", PrimeSum(m, n));

    return 0;
}

C++:

#include <iostream>
#include <cmath>
using namespace std;

// 判断是否是素数的函数
bool prime(int p) {
    if (p < 2) return false;
    if (p == 2) return true;
    if (p % 2 == 0) return false;
    int sqrtP = (int)sqrt(p);
    for (int i = 3; i <= sqrtP; i += 2) {
        if (p % i == 0) return false;
    }
    return true;
}

// 计算m到n之间所有素数的和
int PrimeSum(int m, int n) {
    int sum = 0;
    for (int i = m; i <= n; i++) {
        if (prime(i)) {
            sum += i;
        }
    }
    return sum;
}

int main() {
    int m, n;

    cin >> m >> n;
    cout << "Sum of ( ";
    for (int p = m; p <= n; p++) {
        if (prime(p))
            cout << p << " ";
    }
    cout << ") = " << PrimeSum(m, n) << endl;

    return 0;
}

通过上述代码,我们实现了题目的要求,首先判断了一个数是否为素数,然后计算了给定区间内所有素数的和。

总结:

从这道题中,我们可以学习到以下几点:

1. **基础算法的应用**:这道题让我们用到了判断素数的基本算法。对于初学者来说,了解如何判断一个数是否是素数是很重要的。

2. **数学原理**:
   - 了解素数的定义。
   - 理解为什么判断一个数是否为素数时,只需要检查它不能被2到其平方根之间的任何数整除。

3. **代码的优化与效率**:直观的判断素数的方法是检查一个数是否能被2到它自己的前一个数整除。但这是非常低效的。通过这个题目,我们学到了一个更高效的方法:只需检查到它的平方根。

4. **函数的使用和设计**:通过这个题目,我们学习了如何设计和使用函数来解决一个问题。我们首先设计了一个判断素数的函数,然后设计了一个计算给定区间内所有素数之和的函数。

5. **程序的结构和逻辑**:编写清晰、有结构的代码是很重要的。通过这道题,我们可以看到如何将问题分解为小的、可管理的部分,并通过函数来实现每一部分。

6. **实践输入输出**:这道题也提供了一个机会来实践如何从用户接收输入以及如何格式化输出。

总的来说,这道题目不仅提供了对素数算法的基础认识,还强调了函数、逻辑结构和I/O的重要性,是一个综合性的练习。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相关变化率的例子

如图&#xff0c;不解释。 很多物理学上的物理量&#xff0c;直接使用微分和导数来定义&#xff0c;因此可以不加证明的直接使用这些物理量。 解&#xff1a; d l 2 , d w 3 dl 2, dw 3 dl2,dw3 v l 2 w 2 , d v − 2 l d l 2 w d w 2 l 2 w 2 − 2 12 2 2 5…

内网渗透神器CobaltStrike之内网信息收集(九)

收集域内信息 Windows命令 查看网关的ip地址, DNS的ip地址、域名等等&#xff1a;shell ipconfig /all 查看当前主机所在的域: shell net view /domain 查看当前域的主机列表: shell net view 查看指定域的主机列表: shell net view /domain:[domain] 若beacon用户是域控, 则…

数据同步工具比较:选择适合您业务需求的解决方案

在当今数字化时代&#xff0c;数据已经成为企业的核心资产。然而&#xff0c;随着业务的扩展和设备的增多&#xff0c;如何实现数据的高效管理和同步成为了一个亟待解决的问题。本文将介绍几种常见的数据同步工具&#xff0c;并对比它们的功能、性能和适用场景&#xff0c;帮助…

二、9.硬盘驱动程序

文件系统是运行在操作系统中的软件模块&#xff0c;是操作系统提供的一套管理磁盘文件读写的方法和数据组织、存储形式&#xff0c;因此&#xff0c;文件系统&#xff1d;数据结构&#xff0b;算法&#xff0c;哈哈&#xff0c;所以它是程序。它的管理对象是文件&#xff0c;管…

互斥锁的概念,与部分接口

何为互斥 一种对共享数据的保护&#xff0c;防止多线程同时访问共享资源的时&#xff0c;数据混乱的问题。在互斥期间&#xff0c;保证执行流由并行改为串行。任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&#xff0c;访问临界资源&#xff0c;通常对临界资源起…

苍穹外卖 day2 反向代理和负载均衡配置的代码

为什么要整这些玩意 为了并发&#xff0c;为了容错&#xff0c;为了高可用 一 反向代理的代码 server{listen 80;server_name localhost;location /api/{proxy_pass http://localhost:8080/admin/; #反向代理} }**proxy_pass&#xff1a;**该指令是用来设置代理服务器的地址&…

1小时学会Python

1.Hello world 安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行。 我们写下一句著名的程序语句: 并按回车,你就能看到这句被K&R引入到程序世界的名言。 在解释器中选择"File"--"New Window" 或快捷键 …

如何通过振动判断设备健康度?以PreMaint设备数字化平台为例

在工业生产过程中&#xff0c;设备的健康状况直接关系到生产效率和安全。而振动分析作为一种重要的设备健康监测手段&#xff0c;可以通过监测设备的振动情况来判断其健康状况。本文将以PreMaint设备数字化平台为例&#xff0c;探讨如何通过振动分析来判断设备的健康度&#xf…

【javaweb】学习日记Day3 - Ajax 前后端分离开发 入门

目录 一、Ajax 1、简介 2、Axios &#xff08;没懂 暂留&#xff09; &#xff08;1&#xff09;请求方式别名 &#xff08;2&#xff09;发送get请求 &#xff08;3&#xff09;发送post请求 &#xff08;4&#xff09;案例 二、前端工程化 1、Vue项目-目录结构 2、…

IDEA中使用Docker插件构建镜像并推送至私服Harbor

一、开启Docker服务器的远程访问 1.1 开启2375远程访问 默认的dokcer是不支持远程访问的&#xff0c;需要加点配置&#xff0c;开启Docker的远程访问 # 首先查看docker配置文件所在位置 systemctl status docker# 会输出如下内容&#xff1a; ● docker.service - Docker Ap…

如何使用PHP实现多语言网站功能

如何使用PHP实现多语言网站功能 在全球化的今天&#xff0c;开发多语言网站成为了一个必要的需求。PHP作为一种常用的编程语言&#xff0c;可以很方便地实现多语言网站功能。本文将介绍如何使用PHP实现多语言网站功能&#xff0c;并提供相应的代码示例。 一、创建语言文件 首先…

系统集成项目管理工程师【中级】考证学习资料整理分享——第一章《信息化基础知识》,持续更新中........

系统集成项目管理工程师(中级)考证学习资料整理分享,持续更新中........ 第一章 《信息化基础知识》 一、信息与信息化 在充满前所未有的创新活力的同时,信息化正以更快地速度推进生产力的发展,围绕智能制造、云计算、网络空间、移动互联、工业互联、大数据、信息安全等领…

网络安全—黑客—自学笔记

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…

多线程与高并发编程一

文章目录 一、故事背景二、知识点主要构成1、线程的概念2、启动方式2.1、继承Thread类 重写run方法2.2、实现Runnable接口 重写run方法2.3、实现Callable 重写call方法 配合FuterTask获取线程结果 3、常用方法start()方法&#xff1a;run()方法&#xff1a;sleep(long millis)方…

【HCIP】企业网三层架构实验

题目&#xff1a; 拓扑图 配置 LSW1 //链路聚合 [lsw3]interface Eth-Trunk 1 [lsw3-Eth-Trunk1]trunkport GigabitEthernet 0/0/3 0/0/4 [lsw3-Eth-Trunk1]q [lsw3]vlan batch 1 2 [lsw3]interface Eth-Trunk 1 [lsw3-Eth-Trunk1]port link-type trunk [lsw3-Eth-Trunk1]port…

docker中bridge、host、container、none四种网络模式简介

一.bridge模式 1.简介 2.演示 &#xff08;1&#xff09;运行两个容器&#xff0c;不指定网络模式情况下默认是bridge模式 &#xff08;2&#xff09;在主机中自动生成了两个veth设备 &#xff08;3&#xff09;查看两个容器的IP地址 &#xff08;4&#xff09;可以自定义…

基于图卷积网络的知识嵌入8.21

基于图卷积网络的知识嵌入 摘要介绍 摘要 近年来&#xff0c;围绕图卷积网络&#xff08;GCN&#xff09;这一主题出现了大量的文献。如何有效地利用复杂图中丰富的结构信息&#xff08;例如具有heterogeneous types of entities and relations(异构实体和关系类型) 的知识图谱…

深入理解ForkJoin

任务类型 线程池执行的任务可以分为两种&#xff1a;CPU密集型任务和IO密集型任务。在实际的业务场景中&#xff0c;我们需要根据任务的类型来选择对应的策略&#xff0c;最终达到充分并合理地使用CPU和内存等资源&#xff0c;最大限度地提高程序性能的目的。 CPU密集型任务 …

【快速解决方案】浏览器的安全策略不允许通过 file:// 协议直接加载外部文件(最省事的方法)

目录 问题摘要 解决办法 检验结果 问题摘要 Failed to load resource: net::ERR_FILE_NOT_FOUND&#x1f308; Cute Code Editor &#x1f308;.html:162 Fetch API cannot load file:///D:/%E6%A1%8C%E9%9D%A2/%E4%B8%83%E5%A4%95%E5%BF%AB%E4%B9%90/index.txt. URL scheme …

RK3399平台开发系列讲解(内核调试篇)内核中内存泄漏的调试

🚀返回专栏总目录 文章目录 一、Linux 内核内存泄漏二、如何观测内核内存泄漏?三、kmemleak 工具沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 内核内存泄漏往往都会是很严重的问题,那么,我们该如何判断内存泄漏是否是内核导致的呢? 一、Linux 内核内存泄漏 …