【视频+图文】Java基础经典练习题(一)输出2-100之间的素数,及素数个数
能解决题目的代码并不是一次就可以写好的
我们需要根据我们的思路写出后通过debug模式找到不足再进行更改
多次测试后才可得到能解决题目的代码!
通过学习,练习【Java基础经典练习题】,让我们一起来培养这种解决问题思路。
第一题:判断2-100之间有多少个素数,并输出所有素数。
1.视频讲解:
2.思路分析:
Q1:什么是素数?
A1: 素数(质数)指的是在大于1的自然数中除了1和该数本身外,无法被其它自然数整除的数。(也就是说一个数只有1和它本身两个因数)
Q2:如何判断一个数有除了1和该数本身之外的因数?
A2:让我们以4为例来分析:
判断4能否整除一个数,无非只有以下4种情况:
情况1:4/1
情况2:4/2
情况3:4/3
情况4:4/4那么我们又知道:每个数都有1 和 它本身这两个因数(即每个数都可以被1和它本身整除)
所以呢我们在【判断4能否整除一个数】就只需要考虑以下这两种情况:
情况2:4/2
情况3:4/3由此我们可以总结出来规律:
判断一个数是否有其它因数,就让这个数去除[2-(需判断的数-1)]这个范围内的数。
如判断4就只需看:4/2、4/3看这两种情况中是否有整除情况发生:
若有则说明此数不为素数,就进行下一次判断
若没有说明此数为素数,需输出此数,并让保存【素数个数的变量】加1后再进行下一次判断。
3.代码+详解+答案:
package Exercise;
public class SuShu1 {
public static void main(String[] args) {
int i = 0;
int j = 0;
int count = 0;//储存2-100之间的素数个数
boolean flag = true;
//用处:在当一个数有【除1和它本身之外的因数】时,使其值变为false,以便进入下一次循环
for (i = 2; i <= 100; i++) {//从2-100开始进行循环
flag = true;
//每完成一次for循环需要把flag值重新置为true,否则将会影响下次的循环
for (j = 2; j < i; j++) {
//用此for循环的数字来判断i是否有【除1和它本身之外的因数】
if (i % j == 0) {//如果i%j==0,说明i有【除1和它本身之外的因数】
flag = false;//这时让flag = false;
break;//并退出这个双重for循环
}
}
if (flag == true) {
//从双重for循环退出后,判断flag的值是否是true,若为true则说明此数为素数
count++;//存储素数的总和加1
System.out.println("从2-100之间的素数有:" + i);//输出素数结果
}
}
System.out.println("从2-100之间的素数个数有:" +count);//输出素数总个数
}
}
代码讲解:以i=4为例
- i=4 4<100
- flag = true
- j=2 ,2<4
- 因为i%j == 0(即4%2 == 0)所以flag = false。并执行break语句。
- 执行break语句后就退出第二个for循环。(执行break语句后,break语句后面的代码不会执行并且会终止本层循环)
- 因为现在的flag ==false不满足if(flag == true)条件
- 所以i++ i=5,进入下一次的判断
结果:
4.为大家准备了彩蛋:

【视频+图文】Java基础经典练习题(一)输出2-100之间的素数,及素数个数的更多相关文章
- 6、50道JAVA基础编程练习题跟答案
50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...
- 50道JAVA基础编程练习题
50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...
- 50道JAVA基础编程练习题 - 题目
50道JAVA基础编程练习题[1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [2]题目:判断 ...
- JAVA 基础编程练习题2 【程序 2 输出素数】
2 [程序 2 输出素数] 题目:判断 101-200 之间有多少个素数,并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数, ...
- java基础编程练习题
1.題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1 2 3 4 5 6 7 1 1 2 3 ...
- Java基础50题test2—输出素数
[输出素数] 题目:判断 101-200 之间有多少个素数,并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数 pu ...
- JAVA 基础编程练习题24 【程序 24 根据输入求输出】
24 [程序 24 根据输入求输出] 题目:给一个不多于 5 位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. package cskaoyan; public class cskaoya ...
- Java 基础 Map 练习题
第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...
- JAVA基础经典面试
[前言] 整理好久,这篇总结写的超级好,很全面.要全部背下来,至于框架应用那块,一定要有针对的,多写项目,照着慕课的对应项目. 链接:http://www.importnew.com/22083.ht ...
随机推荐
- jenkins使用(3)-设置定时任务
配置时间如果错误,代码不会运行 *表示任意时刻
- 关于Synchornized,Lock,AtomicBoolean和volatile的区别介绍
1. volatile 变量可以被看作是一种 "程度较轻的 synchronized". 2. Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的 ...
- HashMap的四种遍历!
HashMap的四种遍历 import java.util.Collection; import java.util.HashMap; import java.util.Map; import jav ...
- 4 Values whose Sum is 0 (二分+排序)
题目: The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, com ...
- 常用JS代码片段
1.隐藏部分数字,如手机号码,身份证号码 1 2 3 function (str,start,length,mask_char){ return str.replace(str.substr(star ...
- 悖论当道,模式成空:汽车O2O真是死得其所?
O2O热潮的兴起似乎来得颇为蹊跷--或许是线上连接线下的模式太过空泛,具有极大的包容性,让各个行业都忍不住在其中横插一脚.在经历过最初的崛起和后来的火爆之后,最终形成目前的寒冬.究其原因,O2O并不是 ...
- 算发帖——俄罗斯方块覆盖问题一共有多少个解
问题的提出:如下图,用13块俄罗斯方块覆盖8*8的正方形. 那么一共可以有多少个解呢?(若通过旋转.翻转一个解而得到的新解,则两个解视为同一个解) 首先,求解的问题,已经在上一篇帖子里完成 算 ...
- Ⅱ:python入门
一.编程语言介绍 编程语言的分类: 机器语言 汇编语言 高级语言(编译型.解释型号) 总结: 执行效率:机器语言>汇编语言>高级语言(编译型>解释型) 开发效率:机器语言<汇编 ...
- 正式学习MVC 01
1.新建项目 点击创建新项目,选择ASP.NET web应用程序,对项目进行命名后点击创建. 截图如下: 取消勾选HTTPS配置 可选择空 + mvc 或直接选定MVC 2.目录结构分析 1) App ...
- 学习经典算法—JavaScript篇(一)排序算法
前端攻城狮--学习常用的排序算法 一.冒泡排序 优点: 所有排序中最简单的,易于理解: 缺点: 时间复杂度O(n^2),平均来说是最差的一种排序方式: 因为在默认情况下,对于已经排好序的部分,此排序任 ...