Java循环和数组练习题:打印素数升级版
前两天一个小伙伴问了我一个数组的练习题,我一看思路很清晰,就是打印素数加了个数组。没想到写的时候啪啪打脸,终究还是没逃过眼高手低。本来不打算发出来了,因为发出来愈发显得我很菜,最后还是打算分享出来,一来想着刚学习数组的小伙伴看到了多少会有点收获,再有就是总结了两句话。
题目内容:
我们认为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
这个题其实不难,只不过对于刚学到这方面知识的小伙伴和像我这样的菜鸡来说需要注意两个地方:
好了,一个基础题用的时间竟然是我想象的两倍,但是也反省了自己
第一:你真的可能比自己想象的还要菜。
第二:自己会做的东西也不一定能立马做出来,很容易犯眼高手低的错误。
第三:不能轻视基础。
第四:如果基础真的扎实了,前几条都是扯淡。
Java循环和数组练习题:打印素数升级版的更多相关文章
- Java学习笔记6(循环和数组练习题)
1.输出100到1000的水仙花数: public class LoopTest{ public static void main(String[] args){ int bai = 0; int s ...
- java循环、数组练习
System.out.println("请输入学生个数"); int a=sc.nextInt();//定义一个变量说明学生的数量 int max=0; int[] scores= ...
- Java基础:数组的声明,循环,赋值,拷贝。
数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...
- IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素
从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...
- 使用基础知识完成java小作业?强化练习-1.输入数组计算最大值-2.输出数组反向打印-3.求数组平均值与总和-4.键盘输两int,并求总和-5.键盘输三个int,并求最值;
完成几个小代码练习?让自己更加强大?学习新知识回顾一下基础? 1.输入数组计算最大值 2.输出数组反向打印 3.求数组平均值与总和 4.键盘输两int,并求总和 5.键盘输三个int,并求最值 /* ...
- java学习之数组(二)
在上一节中我们讲到了数组的概念,定义,以及在内存当中的表现形式.那么这里我们来说一下,数组的另一种定义方式. 在上一篇当中我们规定是这个样子定义数组的, class ArrDemo { public ...
- 【JAVA零基础入门系列】Day10 Java中的数组
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...
- 第81节:Java中的数组
第81节:Java中的数组 本节介绍数组的基本概念,数据就是一种数据结构,可以用来存储多个数据,每个数组中可以存放相同类型的数据.比如,在学校,我们是一个班,这里的班级中每个同学都是这个班级数组中的元 ...
- [转]java List和数组相互转换方法
原文地址:https://blog.csdn.net/zjx2016/article/details/78273192 前言在java项目中数组和list集合(这里指ArrayList)经常需要互相转 ...
随机推荐
- DZNEmptyDataSet的使用
DZNEmptyDataSet是外国友人写的开源项目,github地址(具体的使用以及Demo,点击进入github主页),简单介绍下DZNEmptyDataSet的使用方法. 对于iOS开发者来说, ...
- C++程序设计--运算符重载
目录 1, 运算符重载2, 赋值运算符的重载3, 流插入运算符重载4,自加/自减运算符的重载 运算符重载 作用:对抽象数据类型也能够直接使用C++提供的运算符.使得程序更简洁.代码更容易理解. 运算符 ...
- 3D打印如何重组制造格局?
全球化的竞争正变得毫无底线,国与国之间只有利益,没有同情,也就是说美国品牌想把自己的工厂移回本土,是不会考虑中国工人的生存现状的,更不会顾及这里的GDP和环境问题,甚至还会依靠经济能力去奴役其他国家 ...
- 牛奶别乱喝6种最好最差牛奶PK
牛奶被认为是最健康的一种食材,而且牛奶柔滑的口感和味道让地球上的每一个人都爱不释口.随着现代工业的发展,牛奶也被加工成各种各样的制品,即便是牛奶本身也有着无数的选择,那么究竟什么样的牛奶好.什么样 ...
- 【深入理解Java虚拟机】类的初始化过程
类的初始化过程 类的加载过程.png 加载 将 Class 文件以二进制的形式加载到内存中 验证 校验 Class 文件是否安全,是否被正确的修改等 准备 为类变量申请内存,设置默认值,(初始化变量的 ...
- Pandorabox固件路由器上申请Let's Encrypt证书,为内网里的多个web服务提供SSL支持
对于家中宽带有公网IP的用户,有时我们需要将路由器内部网络的某些web服务通过端口转发暴露到外网(例如NAS远程访问),但HTTP是明文传输,有被监听的风险:如果在NAS上使用自签名证书,再端口转发, ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.3)- FlexSPI NOR连接方式大全(RT1010)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1010的FlexSPI NOR启动的连接方式. 在写完 <FlexSPI NOR启动连接方式(RT1015/ ...
- 使用Pods中使用Swift和Objective-C混编-编译不通过的原因
iOS开发#使用Pods中使用Swift和Objective-C混编-编译不通过的原因-ld: symbol(s) not found for architecture arm64 问题基本描述 在P ...
- 解决 Highcharts 中 yAxis 的 max 设置无效的问题
问题场景 $(function () { Highcharts.chart('container', { title: { text: 'line' }, xAxis: { categories: [ ...
- Java基础--数组的定义
1.数组的定义 数组:一组能够储存相同数据类型值的变量的集合. 2.数组的赋值方式 (1)使用默认的初始值来初始化数组中的每一个元素 语法:数组元素类型[]数组名 = new数组元素类型[数组中元素的 ...
