题目:质数之和

已知,第一个质数是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. ELK技术-Logstash

    1.背景 1.1 简介 Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助业务做解析,丰富,转换和缓冲来自各种来源的数据. Logstash 是一个数据流引擎 它是用 ...

  2. 移动教室APP

    软件名:VERIMAG 官网链接:http://www.verimag.ru/mobilnoe-obrazovanie.html 移动课堂,充满活力的气息.走在时代前沿的同时,也对教育者对于编制课件的 ...

  3. CPU流水线与指令乱序执行

    青蛙见了蜈蚣,好奇地问:"蜈蚣大哥,我很好奇,你那么多条腿,走路的时候先迈哪一条啊?" 蜈蚣听后说:"青蛙老弟,我一直就这么走路,从没想过先迈哪一条腿,等我想一想再回答你 ...

  4. 使用J2EE 登录实例开发

    我们先了解下Servlet的生命周期 Servlet部署在容器里,其生命周期由容器管理. 概括为以下几个阶段: 1)容器加载Servlet类. 当第一次有Web客户请求Servlet服务或当Web服务 ...

  5. harbor官方关于创建https的有关命令

    官方地址:https://goharbor.io/docs/2.0.0/install-config/configure-https/ 命令总结: openssl genrsa -out ca.key ...

  6. kubeadm join 命令执行流程

  7. kubernetes(k8s)命令大全

    状态查询 # 查看集群信息 # kubectl cluster-info Kubernetes control plane is running at https://127.0.0.1:8443 K ...

  8. PostgreSQL 选择数据库

    数据库的命令窗口 PostgreSQL 命令窗口中,我们可以命令提示符后面输入 SQL 语句: postgres=# 使用 \l 用于查看已经存在的数据库: postgres=# \l List of ...

  9. Ubuntu20.04本地安装Redash中文版

    一.安装基础环境: # 1.更换APT国内源 sudo sed -i s@/cn.archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources ...

  10. 基于SqlSugar的开发框架循序渐进介绍(14)-- 基于Vue3+TypeScript的全局对象的注入和使用

    刚完成一些前端项目的开发,腾出精力来总结一些前端开发的技术点,以及继续完善基于SqlSugar的开发框架循序渐进介绍的系列文章,本篇随笔主要介绍一下基于Vue3+TypeScript的全局对象的注入和 ...