C语言如何使用函数求素数和举例

本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。素数就是只能被1和自身整除的正整数。

注意:1不是素数,2是素数。

函数接口定义:

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

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

裁判测试程序样例:

#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

int prime( int p )
{
     int ret=1;//先假设p是素数
     if(p>1)//因为最小的素数是2,所以小于2的整数统统不考虑
   {
        for(int i=2;i<p;i++)
       {
           if(p%i==0)//有数字可以将它整除,说明p不是素数,将ret变成0
           {
               ret=0;
               break;
           }
        }
     }else//小于2的数直接到这个else里,ret变成0,直接淘汰
     {
       ret=0;
     }
    return ret;
}
int PrimeSum( int m, int n )
{
    int sum=0;
    for(int i=m;i<=n;i++)
    {
        if(prime(i))//如果i是素数的话prime(i)==1
        {
            sum+=i;
        }
    }
    return sum;
}

道行不够,这题想了好久,后面仔细想了一下素数的性质(正整数,最小的素数为2)才搞出来,数学渣叹气o(╥﹏╥)o,而且我发现这里的头文件有昨天的#include <math.h>,是不是会有哪个函数能够用来调用呢。。。

总结

到此这篇关于C语言如何使用函数求素数和的文章就介绍到这了,更多相关C语言求素数和内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言中判断素数(求素数)的思路与方法实例

    目录 前言 思路1实现: 思路2实现: <C与指针>4.14-2: 补充:判断素数的4种方法实例 总结 前言 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数. 思路2):判断方法还可以简化.m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去

  • C语言算法练习之数组求素数

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.声明数组 3.3.声明相关变量 3.4.数组赋值 3.5. 输出数组里面元素的值 3.6.求素数.素数和.最大的素数 3.7.输出所求的素数.素数和.最大的素数 四.经典算法实例程序 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 数组求素数 问题的描述 如下几点所示 输出1750 到 1850 之间的素数. 计算并输出1750 到 1850 之间的素数之和 S. 并且输出最大

  • c语言求出给定范围内的所有质数

    程序功能: 输入一个整数,要求打印出这个整数以内的所有质数. 程序示例: #include <stdio.h> #include <stdlib.h> #include <math.h> bool IsPrime(int x) { bool bResult = false; int i, k; k = (int)sqrt(x); for (i = 2; i <= k; i++) { if (x % i == 0) { break; } } if (i > k

  • C语言用递归函数对素数进行判断流程

    目录 前言 思路简述 代码实现 前言 本文介绍递归函数实现素数判断. 事实上,递归算法判断素数的本质是试除法,且递归算法在本题中并不具有优势.它不仅没有优化原算法,还增加了空间复杂度与时间复杂度. 时间复杂度和空间复杂度都是0(N),实现效率可想而知. 那为什么还要写呢?仅作为开拓思路.加深对递归函数的理解而为之.其实很多基础的算法,包括斐波那契数列.闰年等,都可以用递归实现.递归思路能将复杂的问题呈现以简单的思路,这是它的优势.通过简单问题的递归实现,大家可以提前熟悉递归的构造和运用,为后续学

  • C语言求素数的几种方式总结

    目录 一.判断n是否能被2~n-1整除 方法一 方法二 二.判断n是否能被2~√n间的整数整除 方法一 方法二 总结 一.判断n是否能被2~n-1整除 输入的数n不能被2-(n-1)整除,说明是素数 输入的数n能被2-(n-1)整除,说明不是素数 注意:1不是素数,素数是指大于1的自然数,除了1和该数自身外,无法被其他自然数整除的数. 方法一 #include<stdio.h> int main() { int i, n; printf("请输入一个数:"); scanf(

  • C语言求质数的几种简单易懂方式

    目录 一. 暴力枚举 二. 暴力求解的优化版本 三.埃拉托斯特尼筛法 细节部分 1. 怎样选一批素数能将区间内所有合数都筛完? 2.筛选过程具体是怎样的? 3.具体代码 总结 质数就是除了1和它本身外没有其他因数 一. 暴力枚举 假设现在有一个数num,要求我们判断是否是质数,由定义知我们可以遍历从2到 num-1的所有数,假 设都不能被整除,则num是质数,否则不是,C语言代码实现如下. 其中track用来检测是否遍历完从2到num-1的所有数 int main() { int n = 0;

  • R语言—自定义函数求置信区间的操作

    看代码吧~ #求单正态均值mu的置信区间 #参数依次为置信水平alpha,正态样本x,已知总体方差(默认为未知) mu <- function(alpha,x,sigma=NA){ n <- length(x) meanx <- mean(x) if(is.na(sigma)){ t1 <- qt(1-alpha/2,n-1) t2 <- qt(1-alpha,n-1) mu11 <- meanx - t1*sqrt(sum((x-meanx)^2)/(n-1))/sq

  • C语言学习之函数知识总结

    目录 前言 一.引入 二.认识函数 三.函数的作用 四.函数的返回值 五.定义函数 六.函数的类型 七.return语句与break语句的区别 八.函数的分类 九.主函数 十.函数使用举例 十一.函数的声明 十二.函数的形参与实参 十三.合理设计函数 十四.变量的作用域 十五.函数内存的分配 前言 函数是C语言的基本单位,学好函数有利于程序的模块化以及避免写出重复的代码从而减少代码量,并且可以提高程序的复用性与可读性. 一.引入 引例:定义6个整型变量a,b,c,d,e,f,并对它们任意赋值.分

  • 浅谈C/C++ 语言中的表达式求值

    经常可以在一些讨论组里看到下面的提问:"谁知道下面C语句给n赋什么值?" m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5: a = 4; cout << a++ << a; C++ 不是规定 << 操作左结合吗?是C++ 书上写错了,还是这个系统的实现有问题? 注:运行a = 4; cout << a++ << a; 如在Visua

  • C语言编程中函数的基本学习教程

    C 语言中的函数等价于 Fortran 语言中的子程序或函数,也等价于 Pascal 语言中的过程或函数.函数为计算的封装提供了一种简便的方法,此后使用函数时不需要考虑它是如何实现的.使用设计正确的函数,程序员无需考虑功能是如何实现的,而只需知道它具有哪些功能就够了.在 C 语言中可以简单.方便.高效地使用函数.我们经常会看到在定义后仅调用了一次的短函数,这样做可以使代码段更清晰易读. 到目前为止,我们所使用的函数(如 printf.getchar 和 putchar 等)都是函数库中提供的函数

  • C语言使用矩形法求定积分的通用函数

    本文为大家分享了C语言使用矩形法求定积分的通用函数,供大家参考,具体内容如下 要求: 写一个用矩形法求定积分的通用函数,分别求:sin(x),cos(x),e^x . 分析: 矩形法,学过高等数学就知道化曲为直的思想.将定积分化为多个函数连续的和.基本思想是将区间[a,b]化成n等分,当n越大的时候结果越准确.图形化成一小块一小块的矩形.底边长都为(b-a)/n.高为每个等分点的函数值.然后将每个矩形的面积相加即为所求. 如: y=x; 可以通过矩形的方法来无限逼近定积分的求解,如下: 因为被分

  • C语言container of()函数案例详解

          在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢???  哎,算了,还是放弃吧...). 这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧.         其实,原理很简单:  已知结构体type的成员member的地址ptr,求解结构体type的起始地址.        

  • C语言入门篇--函数及数组用法

    目录 函数 1.函数的作用 2.函数的构成 (1)返回值 (2)函数名 (3)形参列表 (4)函数体 数组 1.定义数组 1.1不进行初始化 1.2进行初始化 1.3不给定数组元素个数 2.数组的经典用法 2.1求数组大小.元素大小.元素个数 2.2遍历 面向过程编程:C语言是面向过程的语言:在C语言中,把大部分的功能以一个个函数呈现,就称之为面向过程编程: 函数 是面向过程编程最关键的语法结构. 1.函数的作用 1.从工程上讲,函数可以让我们的代码更具有结构性,让代码更好看. 2.函数可以提升

  • C语言 function recursion函数递归详解

    目录 function recursion(函数递归) 递归的中心思想为: 程序一 递归的两个必要条件 程序一: 程序二: 练习 求n的阶乘 再来道例题 function recursion(函数递归) 函数递归: 是在 一个 过程 或 函数 在其定义或说明中有 直接 或 间接 调用自身 的一种方法 通常把一个 大型复杂的问题 层层 传化 为一个与 原理相似的 ,规模较小 的问题 递归策略 只需 少量的程序 就可以描述出 解题过程 所需的 多次 重复 计算,大大减少了程序的代码量 递归的中心思想

随机推荐

其他