题目:质数之和

已知,第一个质数是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. AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...

  2. Python 爬取网站数据

    一.使用request库实现批量下载HTML 二.使用BeautifulSoup库实现html解析 官网:https://beautifulsoup.readthedocs.io/zh_CN/v4.4 ...

  3. KingbaseES V8R6集群维护案例之--单实例数据迁移到集群案例

    案例说明: 生产环境是单实例,测试环境是集群,现需要将生产环境的数据迁移到集群中运行,本文档详细介绍了从单实例环境恢复数据到集群环境的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingb ...

  4. shell脚本自动化部署Zabbix4.2(修改脚本替换版本)

    #!/bin/bash # 检查操作系统版本,该脚本只能运行在 Centos 7.x 系统上 cat /etc/redhat-release |grep -i centos |grep '7.[[:d ...

  5. ASP.NET MVC 对于视图引擎的优化

    我经常使用asp.net MVC框架来做网站.总的来说,MVC框架是一个非常优秀的框架.相对于曾经的web form模式,我个人感觉分工更加合理思路也更加清晰,但是交给开发人员的工作也相对变多了. 当 ...

  6. PLSQL Developer安装详细步骤,小白,转发

    下载软件可以直接在百度网盘里面下载 链接:https://pan.baidu.com/s/1bZNJ71d2-hvkM6PTbdpgAA 提取码:t9sh 然后直接参考这个链接进行安装https:// ...

  7. SpringBoot Xml转Json对象

    一.导入需要的依赖 <dependency> <groupId>maven</groupId> <artifactId>dom4j</artifa ...

  8. 通过vNode实现给列表字段打标签

    问题 如何给列表数据打标签?类似下面这种样子 思路 数模转化(对接口请求回来的数据进行过滤标记,返回新的数据) 渲染新的数据模型 实现 1.过滤数据,需要打标签的采用jsx写法 业务数据的处理我封装在 ...

  9. 第六章:Django 综合篇 - 13:发送邮件

    在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的发送邮件. 所有的功能都在django.core.mail中. ...

  10. MySQL8.0报错:Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

    MySQL8.0.16版本中新增了一个system_user帐户类型,当新增用户并赋予权限时 mysql> create user 'proxysql'@'192.168.20.%' ident ...