Java黑皮书课后题第7章:*7.6(修改程序清单5-15)程序清单5-15通过检验2、3、4…n/2是否是数n的因子来判断n是否为素数。判断n是否素数的更高效的方法是检验小于等于根n的素数是否有n整
*7.6(修改程序清单5-15)程序清单5-15通过检验2、3、4…n/2是否是数n的因子来判断n是否为素数。判断n是否素数的更高效的方法改写5-15
- 题目
- 题目描述
- 破题
- 程序清单5-15(非本题代码)
- 本题代码
- 运行示例
题目
题目描述
*7.6(修改程序清单5-15)程序清单5-15通过检验2、3、4…n/2是否是数n的因子来判断n是否为素数。判断n是否素数的更高效的方法是检验小于等于根n的素数是否有一个能被n整除。如果都不能则n就是素数。用这种方法改写程序清单5-15以显示前50个素数。需要使用一个数组存储这些素数,之后使用这些素数来检测它们是否可能为n的因子
破题
本题关键点已经圈画
程序清单5-15(非本题代码)
public class qingdan {public static void main(String[] args) {// Number of primes to display:输出50个素数final int NUMBER_OF_PRIMES = 50;// Display 10 per line:一行10个数字final int NUMBER_OF_PER_LINE = 10;// Count the number of prime numbers:计数变量int count = 0;// A number to be tested for primeness:测试用变量int number = 2;System.out.println("The first 50 prime numbers are \n");// Repeatedly find prime numberswhile (count < NUMBER_OF_PRIMES) {// Assume the number is primeboolean isPrime = true; // Is the current number prime?// Test whether number is primefor(int divisor = 2; divisor <= number / 2;divisor++){if (number % divisor == 0){ // If true, number is not primeisPrime =false;break;}}// Display the prime number and increase the countif( isPrime ){count++; // Increase the countif(count % NUMBER_OF_PER_LINE == 0){// Display the number and advance to the new lineSystem.out.println(number);}elseSystem.out.print(number + " ");}// Check if the next number is primenumber++;}}
}
本题代码
public class Test7_6 {public static void main(String[] args) {// Number of primes to display:输出50个素数final int NUMBER_OF_PRIMES = 50;// Display 10 per line:一行10个数字final int NUMBER_OF_PER_LINE = 10;// Count the number of prime numbers:计数变量int count = 0;// A number to be tested for primeness:测试用变量int number = 2;// 设置一个接收素数的数组int[] primeList = new int[50];// Repeatedly find prime numberswhile (count < NUMBER_OF_PRIMES) {// Assume the number is primeboolean isPrime = true; // Is the current number prime?// Test whether number is primefor(int divisor = 2; divisor <= number / 2;divisor++){if (number % divisor == 0){ // If true, number is not primeisPrime = false;break;}}// Display the prime number and increase the countif( isPrime ){primeList[count] = number;count++; // Increase the countif(count % NUMBER_OF_PER_LINE == 0){// Display the number and advance to the new lineSystem.out.println(number);}elseSystem.out.print(number + " ");}// Check if the next number is primenumber++;}// 使用新方法判断primeList[]中的素数(假设为n),有没有比根n小的素数能被n整除// 只要有1个能被整除即可退出并输出可能,如果全部遍历完都不是的话,则输出不可能int length = primeList.length;double root = 0;for (int i = length - 1 ; i >= 0 ; i--){// 求根下nroot = Math.sqrt(primeList[i]);// 遍历<根下n的素数,看是否能被n整除,如果是则输出结果并强制退出for (int y = 0 ; primeList[y] < root ; y++){if (primeList[i] % primeList[y] == 0){System.out.println("可能");System.exit(0);}}}System.out.println("不可能");}
}
运行示例
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
不可能
Java黑皮书课后题第7章:*7.6(修改程序清单5-15)程序清单5-15通过检验2、3、4…n/2是否是数n的因子来判断n是否为素数。判断n是否素数的更高效的方法是检验小于等于根n的素数是否有n整相关推荐
- Java黑皮书课后题第5章:5.2(重复加法)程序清单5-4产生了5个随机减法问题。改写该程序,使它产生10个随机加法问题,加数时两个1到15之间的整数。显示正确答案的个数和完成测试的时间
5.2(重复加法)程序清单5-4产生了5个随机减法问题.改写该程序,使它产生10个随机加法问题,加数时两个1到15之间的整数.显示正确答案的个数和完成测试的时间 题目 题目概述 程序清单5-4 破题 ...
- Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间
7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字.估算调用程序清单7-6中的linearSearch方法的执行时间 题目 题目描述 程序清单7-6的linearSe ...
- Java黑皮书课后题第5章:**5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+……1/(根624+根625)
@[TOC](5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+--1/(根624+根625)) 题目 题目概述 5.35(加法)编写程序,计算 ...
- Java黑皮书课后题第2章:*2.8(当前时间)程序清单2-7给出了显示当前格林尼治时间的程序。修改这个程序,提示用户输入相对于GMT的时区偏移量,显示在这个特定时区的时间
*2.8(当前时间)程序清单2-7给出了显示当前格林尼治时间的程序.修改这个程序,提示用户输入相对于GMT的时区偏移量,显示在这个特定时区的时间 题目 题目描述 运行示例 程序清单2-7(非本题代码) ...
- Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)
Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...
- Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类
Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类 题目 破题 代码 Test10 Test11_LinearEquat ...
- Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类
Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...
- Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的
Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...
- Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字
Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...
- Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类
Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...
最新文章
- 那位13岁就当上老板的开发者是如何炼成的?
- 论文中键入行内公式导致行间距变大的解决方案
- 如何正确处理Android6.0+的运行时权限申请
- java异常及日志注意事项
- 理解 e.clientX,e.clientY e.pageX e.pageY e.offsetX e.offsetY
- C# Winform中慎用Application.DoEvents
- 解决Pytohn安装第三方库出现read timed out 问题
- Java-进阶:Java-File--IO—2
- 二、源代码=程序集及程序集概念介绍
- IE8/9的几个前端bug解决方案
- Hdoj 1064 Financial Management
- highcharts:根据Y的数值范围,动态改变图形的填充颜色
- PayPal开发文档整理(2)- 开发者文档介绍
- 最易难学习的编程语言榜单出炉,C++最难学?
- ios 简单实现半圆形仪表盘 (进度条)
- 2019第八届“中国软件杯”大学生软件设计大赛赛题有哪些?
- 安装DevExpress后如何在工具箱显示Dev控件
- Android stdio报错:“xxx keeps stopping“解决方案
- 开关电源补偿环路设计(2):实践部分-例题
- 居中小圆点html,圆点怎么打