[Java]输入一个整数,输出小于等于它的全部质数

import javax.swing.JOptionPane;

/**
 * 
 */

/**
 * @author David_C_Java
 *输出一个整数,输出小于等于它的全部质数
 *质数: 只有1与自身能整除的数
 */
public class PrintPrime {
	public void Run() {
	利用输入对话框获得用户输入的字符串
		String result = (String)JOptionPane.showInputDialog(null, "请输入一个整数", "输入对话框", JOptionPane.PLAIN_MESSAGE, null, null, null);
		//将输入的字符串转化为整形
		
		int n = Integer.parseInt(result);
		
		for (int i = 2; i <= n; i++) // 1不是素数,所以直接从2开始循环
        {
            int j = 2;
            while (i % j != 0) {
                j++; // 测试2至i的数字是否能被i整除,如不能就自加
            }
            if (j == i){
            //当有被整除的数字时,判断它是不是自身,若是,则说明是素数
                System.out.print(i+"\t"); // 如果是就打印出数字
            }
        }
		System.out.println("\n以上为全部小于等于"+n+"的质数");
    }
	}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值