TestSushu1
https://github.com/jzjaerui/Individual-Project/blob/master/TestSushu1
《程序设计实践I》
题目: 判断素数
学校:齐鲁工业大学
学院:信息学院
班级:计科(高职)13-1
学号:201303014034
姓名:郑丁鹏
2015 年 4 月 28 日
实践一基础程序设计实践
一、实践目的
1、掌握基本输入输出。
2、掌握方法定义与调用,理解参数传递方式。
3、掌握数组的声明、定义与初始化,数组的处理。
4、掌握数组作为方法参数和返回值。
二、实践要求
利用方法、数组、基本输入输出等Java基础知识,给出所选项目的基本设计与实现。
三、项目需求
所选项目名称:判断素数
判断一个给定整数是否为素数。要求将判断过程用方法实现,并利用该方法打印输出前100个素数。
四、项目设计方案
为完成项目功能,主要需实现哪些类,对每个类的数据域、方法、构造方法,不同类之间的关系等进行描述,并用UML图表示出来。
TestSushu1 |
InputStreamReader |
isPrimeNumber |
main |
IOException |
BufferedReader |
五、核心算法详细设计
对于每个类的主要方法,给出其详细设计的核心算法,如:
1、一次性打印输出前100个素数
根据试验内容可知,此次做的是判断一个给定整数是否为素数,并且要求判断过程用方法实现,利用该方法打印输出前100个素数,:
public static boolean isPrimeNumber(int number) {
for (int j = 2; j <= Math.sqrt(number); j++) {
if (number % j == 0) {
return false;
}
}
return true;
}
}
int num = 1;
int count1 = 2;{
while (count1 < 100) {
if (isPrimeNumber(num)) {
count1++;
System.out.println(num);
}
num++;
}
}
2、判断答案正确性;功能测试
给用户提示输入信息及判断并输出结果!程序结构如下:
System.out.println("请输入一个数字: ");
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
String strLine;
int input =0;
int count =0;
try{
strLine = buff.readLine();
input =Integer.parseInt(strLine);
}catch(IOException e){System.out.println("I/O ERR!");}
catch(NumberFormatException e){System.out.println("num format ERR!");}
if(input==1||input ==0)
{
System.out.println(input+"不是素数 ");
}
if(input==2)
{
System.out.println(input+"是素数 ");
}
for(int i=2;i<input;i++)
{
if(input%i==0)
{
System.out.println(input+"不是素数! ");break;
}
count++;
if(count==input-2)
{
System.out.println(input+"是素数! ");
}
}
}
要判断一个整数N是否是素数,只要判定在2到9之间是否有因子就可以了,将N对1到9循环取模,若不为零则表示此数是素数,否则不是素数。
运用java.io包中的BufferedReader类接收用户的整数输入,所以首先创建一个BufferedReader实例。
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
运用BufferedReader类中的readLine()方法整行读取保存位String类型,将其转换位int整形厚运用Math类的sqrt()方法取得其平方根,再用上面判断素数的方法进行判断。
程序应先判断用户输入的是否正确,然后程序在用户输入的范围之间循环使用上面的判断素数的方法,将是素数的整数输。
六、完整源码
完整源码:给出完整的源代码。如:
package jae;
/**
文件:TestSushu1.java
功能:判断素数--判断一个给定整数是否为素数。要求将判断过程用方法实现,并利用该方法打印输出前100个素数。
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestSushu1 {
public static void main(String [] args)
{
int num = 1;
int count1 = 2;{
while (count1 < 100) {
if (isPrimeNumber(num)) {
count1++;
System.out.println(num);
}
num++;
}
}
System.out.println("请输入一个数字: ");
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
String strLine;
int input =0;
int count =0;
try{
strLine = buff.readLine();
input =Integer.parseInt(strLine);
}catch(IOException e){System.out.println("I/O ERR!");}
catch(NumberFormatException e){System.out.println("num format ERR!");}
if(input==1||input ==0)
{
System.out.println(input+"不是素数 ");
}
if(input==2)
{
System.out.println(input+"是素数 ");
}
for(int i=2;i<input;i++)
{
if(input%i==0)
{
System.out.println(input+"不是素数! ");break;
}
count++;
if(count==input-2)
{
System.out.println(input+"是素数! ");
}
}
}
public static boolean isPrimeNumber(int number) {
for (int j = 2; j <= Math.sqrt(number); j++) {
if (number % j == 0) {
return false;
}
}
return true;
}
}
七、使用说明与运行结果截图
使用说明:运行程序,自动打印输出前100个素数;然后根据提示输入数字,程序进行自动判断,并输出判断结果。
运行结果截图:
八、实践总结
在实际操作中,第一次没有输出前一百个素数,后来经过改正后,程序运行成功。
掌握了基本输入输出;掌握方法定义与调用,理解参数传递方式;掌握数组的声明、定义与初始化,数组的处理;掌握数组作为方法参数和返回值。
TestSushu1的更多相关文章
随机推荐
- 罗马数字转整数的golang实现
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I V X L C D M 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + ...
- GUI概述与Frame演示
java 图形化界面的对象存在这两个包中: java.awt :Abstract WindowsToolkit(抽象窗口工具包)需要调用本地系统方法实现功能,属重量级控件 javax.swing:在a ...
- 痞子衡嵌入式:如果你正在量产i.MX RT产品,不妨试试这款神器RT-Flash
-- RT产品落满地,客户工厂生产急; 痞子衡出新神器,从此量产不费力! 恩智浦半导体2017年10月正式发布了业内首款跨界处理器-i.MX RT系列,超强的性能.超高的性价比使得i.MX RT系列火 ...
- LOOPS HDU - 3853 (概率dp):(希望通过该文章梳理自己的式子推导)
题意:就是让你从(1,1)走到(r, c)而且每走一格要花2的能量,有三种走法:1,停住.2,向下走一格.3,向右走一格.问在一个网格中所花的期望值. 首先:先把推导动态规划的基本步骤给出来. · 1 ...
- 20145236《网络对抗》Exp2 后门原理与实践
20145236<网络对抗>Exp2 后门原理与实践 目录: 一.基础问题回答 二.常用后门工具实践 2.1 Windows获得Linux Shell 2.2 Linux获得Windows ...
- 转载 AutoMapper在C#中的有趣应用 https://www.cnblogs.com/lvlinlv/p/7344916.html
最近发现了一个比较有趣的东西 AutoMapper,主要将Model转换为DTO,DTO更注重数据,对领域对象进行合理封装,从而不会将领域对象的行为过分暴露给表现层. 先来看一点实例,两个类之间的映射 ...
- oracle备份恢复之recover database的四条语句区别
1 recover database using backup controlfile2 recover database until cancel3 recover database usin ...
- MYSQL联合多表更新和删除(转)
文章转自http://www.cnblogs.com/andy_tigger/archive/2011/05/11/2043483.html 多表更新在 MySQL 3.23 中,你可以使用 LIMI ...
- ESP32 TIMER
ESP32有两组硬件计时器组,每组包含两个通用硬件计时器.这些计时器都是64位的可双向计数的计数器: 下面的步骤是典型的配置和操作定时器流程: 第一:初始化: 初始化定时器通过函数:timer_ini ...
- 奇怪的组数length属性
Java中的数组其实也是一个对象,但是确实是一个特殊的对象,实在是太特殊了,继承自Object, 多出一个属性length,改写了clone方法. 我debug了数组对象的运行时的Class对象, ...