能解决题目的代码并不是一次就可以写好的

我们需要根据我们的思路写出后通过debug模式找到不足再进行更改

多次测试后才可得到能解决题目的代码!

通过学习,练习【Java基础经典练习题】,让我们一起来培养这种解决问题思路。

第一题:判断2-100之间有多少个素数,并输出所有素数。

1.视频讲解:

求2-100之间素数思路

求2-100之间素数代码详解

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为例

  1. i=4 4<100
  2. flag = true
  3. j=2 ,2<4
  4. 因为i%j == 0(即4%2 == 0)所以flag = false。并执行break语句。
  5. 执行break语句后就退出第二个for循环。(执行break语句后,break语句后面的代码不会执行并且会终止本层循环)
  6. 因为现在的flag ==false不满足if(flag == true)条件
  7. 所以i++ i=5,进入下一次的判断

结果:

4.为大家准备了彩蛋:

最新文章

  1. vs生成pro
  2. cmder添加右键菜单
  3. C#开发中Windows域认证登录2(扩展吉日嘎拉GPM系统)
  4. 图像处理工具包ImagXpress中如何定义图像显示属性
  5. 最近对python颇有兴趣
  6. Spring Mail
  7. 使用Raphael 画图(二) 扩展的图形 (javascript)
  8. HDU 5119 Happy Matt Friends(dp+位运算)
  9. Liferay门户网站portal
  10. ASP.NET Core 源码学习之 Options[3]:IOptionsSnapshot
  11. SOAR SQL进行优化和改写的自动化工具
  12. mysql之代码执行结构
  13. HTML 多张图片无缝连接
  14. C/C++ 之输入输出
  15. 怎么将unbuntu Linux iOS 文件从U盘或者移动硬盘启动?用win32diskimager_cn
  16. flex图片布局
  17. Unresolved external &#39;AlphaBlend&#39; referenced from
  18. log(m+n)找第k大
  19. CMakeFile命令之file
  20. 何为软件的Alpha、Beta、RC和GA发布版本?

热门文章

  1. Disk Group基础概念与深度解析
  2. Qt 信号阻塞和断开
  3. (警告)不要轻易删除libc.so.6,以及误删恢复
  4. python 常用模块介绍
  5. 图解教你如何使用ANT打包java程序
  6. Hive Functions
  7. RocketMQ集群平滑下线或重启某个节点
  8. 腾讯自动化测试的AI智能
  9. Archlinux 自动挂载移动硬盘,开机自动启动smb服务
  10. Java8-19-lambda 重构代码