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个素数;然后根据提示输入数字,程序进行自动判断,并输出判断结果。

       运行结果截图:

                         

八、实践总结

在实际操作中,第一次没有输出前一百个素数,后来经过改正后,程序运行成功。

掌握了基本输入输出;掌握方法定义与调用,理解参数传递方式;掌握数组的声明、定义与初始化,数组的处理;掌握数组作为方法参数和返回值。

 

posted @ 2015-04-28 14:34  jaerui  阅读(242)  评论(0编辑  收藏  举报