存放素数数组JAVA_来一个Java循环和数组练习题——打印素数升级版

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

题目内容:

我们认为2是第一个素数, 3是第二个素数, 5是第三个素数,依次类推。

现在,给定两个整数n和m, 0

注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。

输入格式:

2 5

两个整数,第一个表示n,第二个表示m。

一个整数,示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入样例:2 4

输出样例:15

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

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

1 package test; 2 3 import java.util.Scanner; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 //获取控制台输入的内容 这里如果不会就先去学习一下键盘录入 9 Scanner sc = new Scanner(http://System.in); 10 11 //加一个输入提示 12 System.out.println("请输入m和n的值:(0 m || m > 200) { 18 System.out.println("输入格式有误!"); 19 } 20 21 int sum = 0;// 最后的和 22 int a[] = new int[200];// 定义一个数组用来存放素数 23 int x = 0;// 将素数存到数组里需要的索引 24 25 for (int i = 2; i <= 200; i++) { 26 boolean flag = true;// 弄一个标记,是素数标true,不是素数改成false 默认值为true 27 28 // 判断第i个数是不是素数 29 for (int j = 2; j < i; j++) {// 拿i依次除以2、3、4、5一直除到比i小一的数 30 31 if (i % j == 0) {// 如果有一个能除进,就不是素数 32 flag = false;// 不是素数就给他标记成false 33 break; // 只要出现一次能除尽的情况就不是素数,直接跳出内循环,节省时间 34 } 35 } 36 37 if (flag) {// 没有标上false就说明是素数 38 a[x] = i; // 符合了条件就给他放数组里面 39 x++;//每存入一个素数索引加一,以便下次存放 40 } 41 42 } 43 44 // 因为数组的索引是从0开始,题上要求的2是第一个素数所以需要给n和m都-1 45 for (int i = n - 1; i <= m - 1; i++) { 46 sum += a[i];// 从第n个素数一直加到第m个素数 47 } 48 System.out.println("第" + n + "个素数到第" + m + "个素数之间所有的素数之和为:" + sum); 49 50 sc.close();//关闭流,如果不关闭也不会报错只会有警告 51 52 } 53 54 }

结果:

请输入m和n的值:(0

2

4

第2个素数到第4个素数之间所有的素数之和为:15

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

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

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

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

第三:不能轻视基础。

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

讲到这里,给大家推荐小编通过一些大厂的朋友要到了他们内部的Java面试题,资料难得,而且还是近一年的真实面试题,想要获取的可以点击下方链接或者直接私信“架构”领取:Java学习、面试;文档、视频资源免费获取​shimo.im4480d09c17ce27cf4f2ad607e96ae1f7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值