异常处理,判断该自然数是否是素数

Description

设计一个自然数类,该类的对象可以表示一个自然数,可以判断该数是否是素数。如果所给的数为0或负数,则在构造自然数类的对象时进行异常处理并显示“not a nature!”;如果所给的数是一个自然数,则正常构造自然数对象并给出是否是素数的结果。

Input

若干组数据,每组数据只有一个整型数。

Output

如果所给的数是自然数,则构造自然数类的对象,并判断该自然数是否是素数,如果是素数,则输出“a prime”,否则输出“not a prime”;如果所给的数不是自然数(0或负整数),则构造自然数对象时进行异常处理,并输出“not a nature”。

Sample Input

10
-10
11
8374

Sample Output

not a prime
not a nature
a prime
not a prime

import java.util.Scanner;

public class Main
{
	public static void main(String[] args) 
	{ 
		 Scanner in=new Scanner(System.in);
		 while(in.hasNext()) 
		 {
			int i=in.nextInt();
			boolean b = false;
			if(i<=0)
			{
				System.out.println("not a nature");
				continue;
			}
			for(int j=2; j<=Math.sqrt(i); j++) 
			{
				
				if( i % j == 0) 
				{
					b = false; break; 
				} 
				else 
				{
					b = true; 
				}
			}
			if(b == true) 
			{
				System.out.println("a prime");
			}
			else
			{
				System.out.println("not a prime");
			}
		 }
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
跟我学Java面向对象程序设计技术及应用——识别某个自然数是否为质数(素数)的Java 程序实现示例 1 什么是质数(素数) 1 什么是质数(素数) 对于什么是质数(Prime Number),读者可以查询百科。在百科中的定义如下(如下示图显示具体的定义):质 数又称素数一个大于1的自然数(读者注意是自然数,不是普通的数字),除了1和它 自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是 合数)。 2 质数(素数)的主要特性 注意:质数(素数)有无限个,例如2,3,5,7,11,13,17 …等都是质数(素数);但0和1不是质数(素数),1既不是质数也不是合数。因为它的 约数有且只有1这一个约数;2是唯一的偶数质数(素数),因为所有其他的偶数都可以 除以2。 质数(素数)在公钥加密算法(如RSA)中有重要的应用。 3 如何判断一个数是否为质数(素数判断一个数是质数(素数),还是合数,可以根据它的约数的个数来确定:只有两个 约数的数,是质数;有三个或三个以上的约数的数是合数;有且只有一个约数的数既不 是质数也不是合数(比如自然数"1"既不是质数也不是合数)。 2 编程识别某个自然数是否为质数(素数)的Java程序实现示例 1 在MyEclipse开发工具中创建Java工程项目 1、启动MyEclipse开发工具,并选择Java Project工程项目 2、在工程项目创建的对话框中输入项目名称JavaDemo,并选择项目存放的目录路径 3、点击对话框中的完成(Finish)按钮,将创建出一个空的Java应用程序项目 2 在创建的Java应用程序项目中添加示例程序类 1、右击所创建的Java应用程序项目名称JavaDemo,在弹出的快捷菜单中选择New新建一 个Java程序类 2、在类创建的对话框中输入包名称为com.bluedream.demo,类名称为JavaPrimeNumber ,并选择需要在JavaPrimeNumber类中创建出main()方法 3、点击对话框中的完成(Finish)按钮,将创建出一个空的Java程序类,在该类中自动 地包含有main()方法 4、编程示例中的功能实现的程序代码 在该Java程序中,获得用户从键盘中输入的一个数字变量,然后判断所输入的这个数 字是否为素数,并打印出判断的结果。 (1)程序代码示例 package com.bluedream.demo; import java.util.Scanner; public class JavaPrimeNumber { public static void main(String[] args) { System.out.println("请输入一个整数 ,并按回车键结束输入:"); int someOneInteger = new Scanner(System.in).nextInt(); for(int loopCounterInt=2; loopCounterInt<someOneInteger; loopCounterInt++){ if(someOneInteger % loopCounterInt==0){ System.out.println("你输入的"+someOneInteger+"不是一个素数。"); break; } else { System.out.println("你输入的"+someOneInteger+"是个素数。"); break; } } } } 示例程序中的循环只需要从自然数2开始(for循环中的int loopCounterInt=2定义),一直循环到小于所识别的数字其自身就可以结束循环。因为 小于等于3的自然数只有2和3是质数。 (2)源程序截图 5、在MyEclipse开发工具中执行该示例程序 (1)启动"Run As"中的"Java Application"运行器以在Java虚拟机环境中执行示例 (2)在显示的控制台中输入数字13,将显示出判断的结果(程序判断正确) (3)再在显示的控制台中输入数字12,将显示出判断的结果(程序判断正确) 3 精益求精优化程序代码 1 优化程序代码示例以提高程序执行的效率 1、前面的程序示例的效率是最低的 前面的示例程序主要是根据质数的定义编程实现的我们只需要从2开始,一直到小于 其自身,依次判断能否被n整除即可,能够整除则不是质数,否则是质数。因此,前面的 示例程序之所以是说效率是最低的,因为循环次数是随着识别的数字增大而增加。当所 识别的数字很大时,循环的次数也将很大。 对于一个正整数n而言,它对(n/2, n)范围内的正整数是必然不能够整除的,因此,在判断n的时候,没有必要让它除以该范 围内的数。据此可以对前面的示例程序代码进

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值