Java杂谈三之判断素数以及穷举素数

首先确认下什么是素数,又称质数

百度的定义解答:

质数(prime number)又称素数,有无限个。一个大于1的自然数,如果除了1和它本身

外,不能被其他自然数整除(除0以外)的数称之为素数(质数)

明确了素数的定义后,下面用java来判断素数以及穷举2-999以内的素数,还是一样,主

要看的是对一个数进行判断或者对一组数进行判断的思想,至于怎样判断的,百度的定义已经给了很好的解答思路。

JavaPrimeNubmer:类名

enumPrimeNumber():穷举2-999以内的所有素数

main():主函数

package JavaTestSelf;

import java.util.Scanner;

//从键盘输入一个数,判断是否为素数

public class JavaPrimeNumber {

	//穷举2-999以内的所有素数
	public void enumPrimeNumber()
	{
		for(int i=2;i<1000;i++)
		{
			//设置一个"开关"
			boolean IsPrimeNubmer = true;
			for(int j=2;j<i;j++)
			{
				if(i%j==0)
				{
					//这边不可以用return直接结束程序
					//因为它要继续下去判断下一个数是否为素数
					//用return结束就不继续执行下去了
					//return只限于判断单个数是否为素数
					//这里要用到一个IsPrimeNubmer"开关"
					IsPrimeNubmer=false;
				}
			}
			if(IsPrimeNubmer==true)
			{
				System.out.println(i + "是素数");
			}
		}
	}

	public static void main(String[] args) {
		//实例化类的对象
		JavaPrimeNumber javaPN = new JavaPrimeNumber();
		//穷举2-999以内的所有素数
		javaPN.enumPrimeNumber();
		//以下是判断从键盘上输入的数是否为素数
		System.out.println("请输入一个数:");
		Scanner scan = new Scanner(System.in);
		int temp = scan.nextInt();
		for(int i=2;i<temp;i++)
		{
			if(temp%i==0)
			{
				System.out.println(temp + "不是素数");
				return;
			}
		}
		System.out.println(temp + "是素数");
	}

}

注意以上的代码中,对一个数的判断是否为素数,可以走两条路线:

一个是通过对小于自身的数的取余,如果能整除,直接结束函数,并说明不是素数,否则跳出循环并说明是素数。

另一个就是通过类似开关的概念,判断是一样的,只不过判断不是素数的时候,把开关置反,跳出循环,对开关进行判断,如果开关为真,则是素数。

两种方法最大的区别是到底是针对单独的一个数进行判断,还是对一组数进行判断。前者判断后直接结束程序,输出结果即可。后者则不可以沿用前者的,不能过早的结束程序,因为是一组数的判断,所以用开关的方法来判断再输出。

Java杂谈三之判断素数以及穷举素数

时间: 2024-08-07 08:39:41

Java杂谈三之判断素数以及穷举素数的相关文章

Java算法题2.判断101-200之间有多少个素数,并输出所有素数。

[原创 转载注明出处] 题目2:判断101-200之间有多少个素数,并输出所有素数. 思路: 素数(质数)就是除了1和它本身以外,没有其他的数可以被它整除 java代码实现: 1 package jichu; 2 3 public class jichu2 4 { 5 public static void main(String[] args) 6 { 7 //for循环遍历101-200 8 for(int i = 101; i < 200; i++) 9 { 10 boolean b = f

Java杂谈之二----怎样判断一个数是水仙花数以及穷举水仙花数

首先明确一下什么是水仙花数 百度说,水仙花数指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身 例如:1^3+5^3+3^3=153 水仙花数只是自幂数的一种,严格来说三位数的3次幂数才能成为水仙花数. 但其实也分一位自幂数,两位自幂数,三位自幂数,四位自幂数等等. 所以鉴于水仙花数的定义的不确定和模糊性 以下代码示例不仅限于三位数的水仙花数,主要涉及的是思想问题. 类名:JavaNarcissus 构造函数:JavaNarcissus() 判断一个数是否为水仙花数:IsNarc

java判断输入的数是不是素数

1 package test; 2 3 import java.util.Scanner; 4 5 //判断输入的数是不是素数 6 public class Test18 { 7 public static void main(String[] args) { 8 Scanner s = new Scanner(System.in); 9 System.out.println("输入判断的数"); 10 int a = s.nextInt(); 11 for(int i=2 ; i&l

java判断一个数是否为素数[转]

http://blog.csdn.net/lwcumt/article/details/8027586 import java.util.Scanner; //质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 public class PrimeNumber { public static void main(String[] args) { Scanner scan = new Scanner(System.in);// 扫描器,接收控制台输入信息 Sy

穷举法判断键入的数是不是素数

#include <stdio.h> int main(int argc, char *argv[]) { int num,i; bool flag = true; /*初始化判断结果*/ scanf("Please enter a real number:%d",&num);/*接受一个实数*/ for(i=2;i<num;i++)/*穷举判断*/ { if(num % i==0) { flag = false; /*不是素数*/ break; } } if

Java基础知识强化04:判断101~200之间有多少素数

判断101~200之间有多少素数? 1 package himi.hebao; 2 3 /** 4 * (1).编写函数isPrime()用来判断输入数据是否为素数 (2).遍历判断101~200之间的数据是否为素数,并且计数count 5 * 6 * @author Administrator 7 * 8 */ 9 10 public class TestDemo05 { 11 12 public static void main(String[] args) { 13 int count =

OpenJudge 4146:数字方格 java穷举法

首先是题目描述: 描述   如上图,有3个方格,每个方格里面都有一个整数a1,a2,a3.已知0<=a1,a2,a3<=n,而且a1+a2是2的倍数,a2+a3是3的倍数,a1+a2+a3是5的倍数.你的任务是找到一组a1,a2,a3,使得a1+a2+a3最大. 输入 一行,包含一个整数n (0<=n<=100). 输出 一个整数,即a1+a2+a3的最大值. 样例输入 3 样例输出 5 接下来是我的解法: 刚接触这道题的时候,我首先想到的是穷举法,具体代码如下: import j

Java杂谈6——Java安全模型

Java语言安全模型是其有别于传统的编程语言的一个很重要的特点,采用一种沙箱模型隔离了Java的运行环境与具体的操作系统,使得Java在网络环境下能够更为安全的运行.理解Java的安全模型,能够帮助我们站在更高的层面理解Java的底层实现,在适当的时机及时找出问题所在. 沙箱模型的建立主要涉及了Java语言相关的以下几个部分: 类加载器: 运行时包:指由同一个类加载器装载的.属于同一个包的.多类型的集合.任意两个Java类包访问权限适用的前提是:属于同一个包,还必须是属于同一个运行时包.这样规定

百担百马+百钱百鸡+水仙花数--------“穷举”的三个练习题

1 //百马百担类似于百鸡百钱的问题,穷举 2 3 for(int dm =0;dm<=33;dm++) //大马的数量,第一层循环 4 5 { 6 for(int zm =0;zm<=50;zm++) //中马的数量,第二层循环 7 8 { 9 for(int xm = 0; xm<=200;xm++) //小马的数量,第三层循环 10 11 { 12 if(dm+zm+xm==100&&dm*3+zm*2+xm/2.0==100) 13 { 14 System.out