java中怎么算素数(素数质数计算器)

  • 时间:
  • 浏览:3
  • 来源:java教程网
问答列表
8条问答


1.JAVA输入一个数判断其是否是素数

public class Test{ public void method(int num){ boolean flag = false; if(num<=1){ System.out.println(num 不是素数); }else{ for(int i=2;i(9); }}


2.java怎么判断素数


1、目前使用较有效的方法是试除法。用试除法判断一个自然数a是不是素数时,用各个素数从小到大依次去除a,如果到某一个素数正好整除,这个a就可以断定不是素数;如果不能整除,当不完全商又小于这个素数时,就不必再继续试除,可以断定a必然是素数。

2、素数又称质数。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。

3、素数是与合数相对立的两个概念,二者构成了数论当中最基础的定义之一。基于质数定义的基础之上而建立的问题有很多世界级的难题,如哥德巴赫猜想等。目前为止,人们未找到一个公式可求出所有素数,所以还没有固定的判断公式。
4、一般记住100以内的素数就可以了。有
2、
3、
5、
7、
11、
13、
19、
17、
23、
29、
37、
31、
41、
47、
43、
53、
59、
61、
71、
67、
73、
83、
89、
79、97,一共25个。


3.java中怎样判断素数

int shuzi;new 判断是否素数().disp(shuzi);//实例化“判断是否素数”并调用disp()方法或者int shuzi=Integer.parseInt(agrs); //从mian中取得参数new 判断是否素数().disp(shuzi);


4.java判断素数

楼主,首先你得知道,java是面向对象的语言。而c语言是面向过程的。C语言你可以用scanf输入n。但是java是面向对象的。你想从屏幕得到一个数。必须调用一个类的方法从而取得n。这些类就是输入输出流对象。如BufferedReader等。建议你去看看java的输入输出流。一下是代码:import .*;public class SystemInTest{ //判断是否为质数,是的话返回true不是的话返回false public static boolean isPrimeNumber(int n) { //2为质数 if
(2==n) { return true; } for(int i=2;in;i ) { if(n%i==0) return false; } return true; } public static void main(String args) throws NumberFormatException, IOException{ int n=0; while(true){//为了方便测试,无限循环 System.out.println(请输入一个大于1的整数:); //以屏幕为输入源 新建一个BufferedReader BufferedReader bin=new BufferedReader(new InputStreamReader( )); n=Integer.parseInt(bin.readLine()); //从屏幕得到的是字符串类型的,转换为整数类型 if(isPrimeNumber(n)) { System.out.println(n :是一个质数.); }else{ System.out.println(n 不是一个质数.); } } }}


5.在java中如何判断一个数是不是素数

import java.util.Scanner;public class Demo { public static void main(String args) { System.out.println(请输入一个正整数:); Scanner scanner = new Scanner( ); int number = scanner.nextInt(); System.out.println(是否是素数: isPrime(number)); scanner.close(); } static boolean isPrime(int number) { if (number <= 1) { return false; } for (int i = 2; i <= Math.sqrt(number); i ) { if (number % i == 0) { return false; } } return true; }}


6.JAVA素数算法

int b=Integer.parseInt(a);后面加上if (b==2) { System.out.println(是质数); return; }


7.用JAVA编写一个判断素数的程序

思路分析: 素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数. 所以考虑使用循环的方法,查找有没有其他数字可以整除,可以整除不是素数,不能整除才是素数参考代码import java.util.Scanner;public class NumberDemo { public static void main(String args) { System.out.println(退出程序请输入exit); Scanner sc = new Scanner( );// 用于读取输入 while (true) { System.out.print(请输入一个整数:); String str = sc.nextLine().trim();//读取一行文本,并用trim方法 去掉两端的空格 if (str.toLowerCase().equals(exit)) {//读取的文本如果转换成小写和exit一样,就退出程序 System.out.println(结束程序并退出); sc.close();//sc 是一种IO流,用完最好要关闭 break;//退出循环 } try { int num = Integer.parseInt(str);// 试图把文本转换数字,如果不能转换成数字就会出异常,我们已经用try catch来捕捉异常了.所以不怕异常 if (isPrime(num)) {// 调用isPrime()方法,判断是不是素数 System.out.println(num 是素数!); } else { System.out.println(num 不是素数!); } } catch (Exception e) { System.out.println(错误提示:输入错误,请输入整数或exit);// 捕捉异常,若输入的不是整数,输出异常 } } } //判断素数的方法 public static boolean isPrime(int num) { boolean flag = true; //

1. 首先假设是素数. if (num 2) { //

2. 负数,0,1,2都不是素数, 所以假设不成立,修改flag为false flag = false; } else { for (int i = 2; i = Math.sqrt(num); i ) {// inum 效率较低, // 所以可以缩小范围到开方数 if (num % i == 0) {//

3. 若能被整除,则说明不是素数,所以假设不成立,修改flag为false flag = false; break;// 跳出循环,已经能被整数,不是素数了,后面的循环就不用进行了 } } } return flag;// 返回flag .如果没有被if else 中的任何一种情况修改,那么flag是true,是素数. 否则就不是素数 }}测试运行退出程序请输入exit请输入一个整数:abc错误提示:输入错误,请输入整数或exit请输入一个整数:99不是素数!请输入一个整数:88不是素数!请输入一个整数:77是素数!请输入一个整数:exit结束程序并退出


8.java中怎么求素数

首先楼主应该对素数的定义已经清楚了吧 其实就是一个数,如果存在1和它本身以外,有数能整除它,这个数就不是素数.在这里,有2个关键的变量,我估计解释一下你就能看得明白这个算法了.

1.关于变量k.变量k的作用是优化整个算法,因为比如要判断一个数13是不是素数,我们没必要从2循环到

13.只要循环到对13开根号.13开根号大概是

3.6多,强转为int类型后是

3.也就是说只要检查2,3是否能整除

13.如果不能,13肯定是一个素数.因为比如48这个数,你前面检测到被4整除等于12,那么继续循环超过Math.sqrt
(48)的话,无非就是得到一个反过来的被12除等于4的结果.这个没有必要.

2.关于变量j.注意点
1:j是在最外层的循环体中定义的.这个时候刚定义完,j的值是初始的

0.然后j从2开始,一直到小于等于k结束.这里是控制尝试整除的循环次数.一旦发现在这个范围内有数能整除i,那么就跳出循环.所以,对于你不理解的那个部分,首先确定一点,程序只要执行到break,就说明这个数是素数.例如我们这次k = 10,那么是要从j = 2到10逐一检测 i 是不是能被 j 整除.当j = 7的时候比如可以整除了,就跳出当前内层循环了.这时候, j 显然是不大于 k 的,因为只要是中途跳出,因为内层循环(j = 2; j lt;= k; j )的控制,只要在循环过程中跳出来的,那么j 肯定 lt;= k.只有循环到j = 10依然没有break的话,根据for循环的执行顺序,会执行j ,然后去判断j lt;= k 是否为true,为true则继续下一次循环,否则循环结束.而在这里,如果到10还没有能够整除的话,j是会在10的基础上自增的.这时候j就=11了.那么if ( j gt; k )就不成立了,则i 不会被输出.总结一点:就是如果中途or最后一次循环,找到能整除的数了,那么因为break的关系,最后就不会执行 j , 所以j lt;= k的条件是能保证的. 换言之,如果j gt; k (亦即j lt;= k 的取反)表示没有找到能整除的数.其实j最大也就只能等于k

1.另外,,你也可以自己修改修改,来加深理解.例如 boolean isPrime; //定义布尔变量判断是否素数.是:true;否:false for (int i = 3; i lt;= 100; i ) { isPrime = true; int k = (int) Math.sqrt(i); for (int j = 2; j lt;= k; j ) { if (i % j == 0) { isPrime = false; //如果能够有数整除i,那么就不是素数. break; } } if (isPrime) { System.out.println(i); } }这样就没有必要在外层循环里就定义j这个变量了.如果我上面说的你理解还是比较困难,可以先理解用布尔变量来控制的写法.这个理解了,用j gt; k 判断的就也很容易理解了.

猜你喜欢

java怎么解密md5

问答列表1.JavaMD5如何解密2.java中如何进行md5加密3.java怎么把字符串进行md5加密4.求Java的MD5加密解密实现类。要实现对用户的密码进行加密!然后验

2021-04-16

Java怎么用io流(Java web)

问答列表1.javaio流的典型使用方式有几种2.java中怎样用IO流把一个文件全部读取出来3.java中的io流,怎么运行4.java中什么是IO流5.求解:JAVA中怎么

2021-04-16

Java怎么打印到界面(网页打印不了怎么设置)

问答列表1.java怎么打印出JFrame界面就是我写出一个界面,现在想把它打印出来怎么写代码2.java里如何用输出窗口打印内容3.java调用打印机,把GUI界面里的内容打

2021-04-16

怎么查询java版本(java哪个版本好)

问答列表1.怎么查看java的版本号2.如何查看jdk版本3.怎么查看JAVAJDK版本4.如何看本机JDK详细版本5.如何查看jdk的版本是32位还是64位6.如何查看ecl

2021-04-16

怎么高并发 java(java高并发原理)

问答列表1.java怎样处理高并发2.java中怎么实现高并发3.java如何处理高并发4.java高并发,如何解决,什么方式解决,高并发5.JAVA中怎么处理高并发的情况6.

2021-04-16