题目:质数之和

已知,第一个质数是2,第二个质数是3,第三个质数是5,第四个质数是7,第五个质数是11,第六个质数是13,第七个质数是17,输入两个不相等的正整数a和b,求出第a个质数到第b个质数当中所有质数和。a和b之间以空格间隔,其中a和b都小于200。

输入1:1 4  输出1:17

输入2:7 2  输出2:56

第一步:我们来分析题目

需要注意的要点有:

  1.输入的a和b是“第几个质数”,这启发我们需要使用数组;

  2.求质数和,或许需要循环相加;

  3.观察输入输出2可以发现,a、b大小是不确定的!这就需要我们进行if判断两者之间的大小了。

第二步:梳理题目块

经过分析,我们的c语言程序需要这几个部分:

  1.判断一个数字是否为质数

    为了方便和直观起见,我另定义了一个函数isPrime来判断质数,方法是:对所有从2开始到这个数字之间的、能够被这个数字整除的数用count计数。当count==0时,说明这个数除了1和它本身外没有其他因数了,即质数,return它自己;若count!=0,说明它不是质数,return 0。

        

      int isPrime(int x)
      {
        int i,count=0;
        for(i=2 ; i<x ; i++)
        {
          if(x%i==0)
          {
            count++;
          }
        }
        if(count==0)
        {
          return x;
        }
        else
        {
          return 0;
        }
      }

  2.如果是质数,将这个质数的值赋给数组中的一个变量;如果不是,将这个数字加一以后再循环(发现这里是第一个循环)

  

  int main()
  {
    int a[1000]={0},j,m;
    int origin=2;
    for(j=0 ; j<=1000 ; j++)
    {
      for(m=0 ; a[j]==0 ; m++)
      {
        if(isPrime(origin)==0)
        {
          origin++;
        }
        else
        {
          a[j] = origin;
          origin++;
        }
      }
    }

  3.输入x,y,判断x,y大小之后分别赋给大数max和小数min,利用循环和数组进行求和

    int x,y;
    scanf("%d %d",&x,&y);
    int sum=0;
    int max,min;
    if(x>y)
    {
      max = x;
      min = y;
     }
    else
    {
      max = y;
      min = x;
    }

    for(j=min-1 ; j<max ; j++)
    {
      sum += a[j];
    }
    printf("%d",sum);

    return 0;
  }

第三步:整合代码

#include<stdio.h>
int isPrime(int x)
{
  int i,count=0;
  for(i=2 ; i<x ; i++)
  {
  if(x%i==0)
  {
    count++;
  }
  if(count==0)
  {
    return x;
  }
  else
  {
    return 0;
  }
}

int main()
{
  int a[1000]={0},j,m;
  int origin=2;
  for(j=0 ; j<=1000 ; j++)
  {
    for(m=0 ; a[j]==0 ; m++)
    {
      if(isPrime(origin)==0)
      {
        origin++;
      }
      else
      {
        a[j] = origin;
        origin++;
      }
    }
  }

  int x,y;
  scanf("%d %d",&x,&y);
  int sum=0;
  int max,min;
  if(x>y)
  {
    max = x;
    min = y;
  }
  else
  {
    max = y;
    min = x;
  }

  for(j=min-1 ; j<max ; j++)
  {
    sum += a[j];
  }
  printf("%d",sum);

  return 0;
}

质数之和【计算第x个到第y个质数之和】的更多相关文章

  1. [Swift]LeetCode762. 二进制表示中质数个计算置位 | Prime Number of Set Bits in Binary Representation

    Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime ...

  2. 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;School 中计算平均分的方法是所有科目的分数之和除以总科目数。 要求:定义ComputerAv

    题目: 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数. 定义 Gymnastics 类和 School 类,它们都是 ComputerAverag ...

  3. Leetcode762.Prime Number of Set Bits in Binary Representation二进制表示中质数个计算置位

    给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数. (注意,计算置位代表二进制表示中1的个数.例如 21 的二进制表示 10101 有 3 个计算置位.还有, ...

  4. Java实现 LeetCode 762 二进制表示中质数个计算置位(位运算+JDK的方法)

    762. 二进制表示中质数个计算置位 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数. (注意,计算置位代表二进制表示中1的个数.例如 21 的二进制表示 ...

  5. 易语言效率与C++究竟差多少(质数和计算)

    文本首发bIlibili,cnblogs为作者补发,如在其他平台看见本文,均为经允许的盗窃 易语言作为款主打 中文 易用 编程的开发软件.但是很多人都在批评易语言的效率. 我们今天通过 质数和计算 来 ...

  6. Java初学者作业——输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和(实践2)

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和. 实现思路: (1)声明变量num,用于存储用户输入的数字. (2)通过Sca ...

  7. 编写Java程序,通过给定可变参数方法,计算任意给定的多个int类型数据之和

    返回本章节 返回作业目录 需求说明: 通过给定可变参数方法,计算任意给定的多个int类型数据之和. 实现思路: 定义可变形参方法,参数类型是int类型. 定义变量 sum 接受最终的和. 通过 for ...

  8. 小y的质数

    题目链接:https://ac.nowcoder.com/acm/contest/634/C 链接:https://ac.nowcoder.com/acm/contest/634/C来源:牛客网 题目 ...

  9. 牛客练习赛44 C 小y的质数 (数论,容斥定理)

    链接:https://ac.nowcoder.com/acm/contest/634/C 来源:牛客网 题目描述 给出一个区间[L,R],求出[L,R]中孪生质数有多少对. 由于这是一个区间筛质数的模 ...

随机推荐

  1. 【java】学习路径22-关于BigInteger类,大数字类

    //int ooo = 19999999999999; //long ooo = 19999999999999; //这么大的整数,int和long都存不下的时候,我们就使用Math类下的BigInt ...

  2. String与StringBuilder相互转换以及获取字符串中第一个中文汉字

    String与StringBuilder相互转换 1. StringBuilder转为String StringBuilder sb = new StringBuilder(); sb.append( ...

  3. Java循环解析

    Java循环解析 while循环(先判断) int i=0; while (i<100){    i++;    System.out.println(i); } DoWhile循环(先执行,后 ...

  4. Windows平台真实时毫秒级4K H264/H265直播技术方案

    背景 在刚提出4K视频的时候,大多数人都觉得没有必要,4K的出现,意味着更高的硬件规格和传输要求,1080P看的很爽.很清晰,完全满足了日常的需求.随着电视的尺寸越来越大,原本1080P成像已经无法满 ...

  5. KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)

    案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...

  6. 【读书笔记】C#高级编程 第十三章 异步编程

    (一)异步编程的重要性 使用异步编程,方法调用是在后台运行(通常在线程或任务的帮助下),并不会阻塞调用线程.有3中不同的异步编程模式:异步模式.基于事件的异步模式和新增加的基于任务的异步模式(TAP, ...

  7. 【ACG】博主在专栏更新内容后,及时通知关注他的用户去阅读

    ​ 业务场景 当用户打开应用时,系统发送Push消息给用户,向用户推荐博主信息.用户关注博主后,将保存用户的订阅信息,当关注的博主更新内容时,向订阅的用户发送短信,提醒用户及时查看最新内容.从而持续增 ...

  8. spring native 初体验实现 小米控制美的空调

    目前关于 spring native 分享的文章还比较少 写这篇文章的主要目前是分享一下自己写的一个 小米控制美的空调 的程序 集成 spring native 过程中碰到的一些问题和解决方法 先放地 ...

  9. Java中的Optional

    在我们日常的开发中,我们经常会遇到 NullPointerException.如何才能优雅的处理NPE?这里告诉大家一个较为流行的方法 java.util.Optional 使用Optional来修饰 ...

  10. .NET 反向代理-YARP 部署Https(SSL)

    YARP 作为反向代理中间件,那就无可避免需要使用到 Https 去部署项目,那 YARP 要怎么去实现呢,本来以为 YARP 会有一套自己的实现,在翻阅了资料后发现,根本不是我想的那样,按照 YAR ...