前两天一个小伙伴问了我一个数组的练习题,我一看思路很清晰,就是打印素数加了个数组。没想到写的时候啪啪打脸,终究还是没逃过眼高手低。本来不打算发出来了,因为发出来愈发显得我很菜,最后还是打算分享出来,一来想着刚学习数组的小伙伴看到了多少会有点收获,再有就是总结了两句话。

题目内容:
 我们认为2是第一个素数, 3是第二个素数, 5是第三个素数,依次类推。
 现在,给定两个整数n和m, 0<n<=m<=200, 你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
 注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。
 输入格式:
 2 5
 两个整数,第一个表示n,第二个表示m。
 一个整数,示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
 输入样例:2 4
 输出样例:15

  这里简单帮基础不是很好的小伙伴分析一下思路,如果会的小伙伴可以直接跳过去自己写一下或者直接去看下面的代码,当然代码上也尽量写上了详细的注释。

  首先,素数什么的就不在这儿解释了;题上要求程序要计算第n个到第m个素数之间的所有素数之和,因为m、n是未知的,所以我们得先把200以内的素数全部挑出来;人家下面说了m、n是要输入的,所以你挑出来的素数不能直接打印出来,需要先存到数组里,那么我们就得定义一个数组方便存取素数。好了,上代码。

 package test;

 import java.util.Scanner;

 public class Test {

     public static void main(String[] args) {
//获取控制台输入的内容 这里如果不会就先去学习一下键盘录入
Scanner sc = new Scanner(System.in); //加一个输入提示
System.out.println("请输入m和n的值:(0<n<=m<=200)");
int n = sc.nextInt();//键盘录入
int m = sc.nextInt();// n和m是题中给的范围条件 //判断一下输入的m、n是否符合条件
if (n <= 0 || n > m || m > 200) {
System.out.println("输入格式有误!");
} int sum = 0;// 最后的和
int a[] = new int[200];// 定义一个数组用来存放素数
int x = 0;// 将素数存到数组里需要的索引 for (int i = 2; i <= 200; i++) {
boolean flag = true;// 弄一个标记,是素数标true,不是素数改成false 默认值为true // 判断第i个数是不是素数
for (int j = 2; j < i; j++) {// 拿i依次除以2、3、4、5一直除到比i小一的数 if (i % j == 0) {// 如果有一个能除进,就不是素数
flag = false;// 不是素数就给他标记成false
break; // 只要出现一次能除尽的情况就不是素数,直接跳出内循环,节省时间
}
} if (flag) {// 没有标上false就说明是素数
a[x] = i; // 符合了条件就给他放数组里面
x++;//每存入一个素数索引加一,以便下次存放
} } // 因为数组的索引是从0开始,题上要求的2是第一个素数所以需要给n和m都-1
for (int i = n - 1; i <= m - 1; i++) {
sum += a[i];// 从第n个素数一直加到第m个素数
}
System.out.println("第" + n + "个素数到第" + m + "个素数之间所有的素数之和为:" + sum); sc.close();//关闭流,如果不关闭也不会报错只会有警告 } }
  结果:
    请输入m和n的值:(0<n<=m<=200)
    2
    4
    第2个素数到第4个素数之间所有的素数之和为:15

  这个题其实不难,只不过对于刚学到这方面知识的小伙伴和像我这样的菜鸡来说需要注意两个地方:

 

  好了,一个基础题用的时间竟然是我想象的两倍,但是也反省了自己

  第一:你真的可能比自己想象的还要菜。

  第二:自己会做的东西也不一定能立马做出来,很容易犯眼高手低的错误。

  第三:不能轻视基础。

  第四:如果基础真的扎实了,前几条都是扯淡。

最新文章

  1. linux大文件分割 split命令
  2. CSS code
  3. java Class对象
  4. 隐藏左侧快速导航除DMS导航树之外的其他区域
  5. [像黑客一样生活] shell终端听音乐之网易云shell版
  6. derby支持的数据类型
  7. ios项目生成ipa文件方法
  8. 定义一个“点”(Point)类用来表示三维空间中的点(有三个坐标)。要求如下: (1)可以生成具有特定坐标的点对象。 (2)提供可以设置三个坐标的方法。 (3)提供可以计算该“点”距原点距离平方的方法。 (4)编写主类程序验证。
  9. 用友二次开发之U810.1销售预订单导入
  10. VS清除缓存
  11. ConfigParser读取记事本、notepad++修改后的配置文件会出现:ConfigParser.MissingSectionHeaderError
  12. [转]将某个Qt4项目升级到Qt5遇到的问题
  13. js apply 和call的区别
  14. 矢量切片(Vector tile)番外一:Proj4js
  15. WEB前端规范命名
  16. GitHub起步---创建第一个项目
  17. 设计模式——原型模式(C++实现)
  18. 什么是HTTP Referer?
  19. docker容器运行后退出,怎么才能一直运行?【转】
  20. 关于visual studio的一些日常总结

热门文章

  1. 2.mac下 安装go-ethereum
  2. 状态模式(State)-设计模式
  3. Mongo Delete-19
  4. iPhone6爆炸真是小概率事件吗?
  5. PhalApi 2.7 开发快速上手
  6. Asp.Net Core Filter 深入浅出的那些事-AOP
  7. 沙雕与大婶 | Mock调你的外部依赖吧
  8. Ado.net01
  9. JZOJ 1774. 合并果子 (Standard IO)
  10. Error response:/usr/bin/tf_serving_entrypoint.sh: line 3: 6 Illegal instruction (core dumped) ...