当前位置:首页 » 编程语言 » 判断质数java

判断质数java

发布时间: 2022-12-06 18:36:25

❶ 用java写个程序 判断 用户输入的数 是否是质数

使用java编写判断自然数是否为素数的方式是,使用scanner来接受用户输入的数值,使用素数的算法,实例如下:

Scannersr=newScanner(System.in);
System.out.print("请输入a的值:");
inta=sr.nextInt();
booleanis=true;
if(a<1)
{
System.out.println(a+"不是质数,因为他小于一");
}
else
{
List<Integer>list=newArrayList<Integer>();
for(inti=2;i<a;i++)
{
if(a%i!=1&&a%i!=a)
{
if(a%i==0){
is=false;
list.add(i);
}
}
}
if(is){
System.out.println("a是质数");
}else{
Stringyz="";
for(inti=0;i<list.size();i++)
{
if(yz=="")
{
yz=yz+list.get(i);
}else{
yz=yz+","+list.get(i);
}
}
System.out.println("a不是质数,因为他含有因子"+yz);
}
}

❷ java程序判断输入的一个数是不是质数

一个数是不是质数:只有被自己本身和1整除的自然数才质数,所以程序很简单
for (int i=3;i<1000;i++){
for(int j = i-1;j<=i/2;i++){
if (i%j==0){//说明这个数不是质数
break;
}
if (j=i/2){
System.out.print(i+"是质数");
}
}
}

❸ 用java编程实现判断一个整数是否为质数

素数又称质数:除1和其自身之外,没有其它约数的正整数
2是最小的质数,也是唯一的偶质数
1和0既不是质数又不是合数
合数
public static void prime(int num) {// 能求无限大的质数//但如果所求的范围太大,计算的时间需要很久
int n, m, i = 0;
label1: for (n = 2; n <= num; n++) {
for (m = 2; m <= n / 2; m++) {
if (n % m == 0)
continue label1;
}
i++;
System.out.println("第" + i + "个素数是:" + n);
}
}

❹ 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个。

❺ JAVA 编程方法解决“ 输入一个数判断它是否是质数”

else
if(num1%2!=0&&(num1+1)%2==0){
System.out.println(num1+"是质数");
}
else{
System.out.println(num1+"不是质数");
15%2=1,
(15+1)%2=0
->
15是质数???
修改:
//前面略
else
{
int
flag=1;
for(int
j=2;
j*j<=num1;
j++)//这是质数的判断方法,只要除到这个数的开根号的数为止即可
if
(num1%j==0){System.out.println(num1+"不是质数");
flag=0;
break;}
if(flag)
System.out.println(num1+"是质数");
}
//后面略

❻ Java 判断质数的方法

public static void main(String[] args) {
int count=0;
int prime=1;
while(count<100){
while(true){
prime++;
if(isPrime(prime)){
System.out.print(prime+"||");
count++;
if(count%10==0){
System.out.println(" ");
break;
}
}
}

}
}
public static boolean isPrime(int n){
for(int i=2;i<n;i++){
if(n%i==0){
return false;
}
}
if(n==1){
return false;
}
return true;
}

❼ java怎样判断一个数是不是质数

由于大于2的质数一定是奇数(奇数又不一定都是质数),所以,在判断一个自然数是不是质数时,首先要看它是奇数还是偶数。如果是大于2的偶数,这个数肯定不是质数,而是合数;如果是奇数,那就有可能是质数。在这种情况下,一般使用以下两种方法:
(1)查表法:
主要是指查“质数表”。编制质数表的过程是:按照自然数列,第一个数1不是质数,因此要除外,然后按顺序写出2至500的所有自然数,这些数中2是质数,把它留下,把2后面所有2的倍数划去,2后面的3是质数,接着再把3后面所有3的倍数划去,如此继续下去,剩下的便是500以内的全部质数。
最早使用上述方法来寻求质数的人,是古代希腊数学家埃拉托斯特尼,由于他在开始时,先把自然数写在一块蜡板上,把不是质数的数(合数)分别刺上一个孔,这样,在蜡板上就被刺上了许多象筛子一样的孔,后来,大家就把这种寻求质数的方法叫做“筛法”。
这类的质数表还可以编制成数字范围更大一些的,如1000以内质数表等。判断一个自然数是不是质数,如在表所规定的数字范围内,即可用查表的方法进行判断。
(2)试除法:
在手头上没有质数表的情况下,可以用试除法来判断一个自然数是不是质数。例如判断143、179是不是质数,就可以按从小到大的顺序用2、3、5、7、11……等质数去试除。一般情况下用20以内的2、3、5、7、11、13、17、19这8个质数去除就可以了。如143,这个数的个位是3,排除了被2、5整除的可能性,它各位数字的和是1+4+3=8,也不可能被3整除,通过口算也证明不能被7整除,当试除到11时,商正好是13,到此就可以断定143不是质数。
对179试除过程如下:
179÷2=59……2
179÷3=66……1
179÷5=35……4
179÷7=25……4
179÷11=16……3
179÷13=13……10
179÷17=10……9
当179÷17所得到的不完全商10比除数17小时,就不需要继续再试除,而断定179是质数。这是因为2、3、5、7、11、13、17都不是179的质因数,因此,179不会再有比17大的质因数,或者说179不可能被小于10的数整除,所以,179必是质数无疑。
综上所述,用试除法判断一个自然数a是不是质数时,只要用各个质数从小到大依次去除a,如果到某一个质数正好整除,这个a就可以断定不是质数;如果不能整除,当不完全商又小于这个质数时,就不必再继续试除,可以断定a必然是质数。

❽ 用java语言判断一个数是不是质数

下面是我用JavaScript写的素数函数,供参考,大同小异

PrimeA=function(n,nth){/*	小于n的素数表
参数nth 指定返回第n个素数

*/
//vart0=Time.now5();
/*
方法1:利用isPrime 废弃!

vart=[];
for(vari=2;i<n+1;i++){
if(isPrime(i)){
t.push(i)
}
}
consolelog('方法1:耗时:'+(+Time.now5()-(+t0)));
returnt
*/

//方法2:利用筛法
varp=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59];//自己往后补充,越多越好,可以加快检测小素数的效率
if(nth&&n<=669){
returnp[n-1]
}
if(!nth&&n<2){
return[]
}

if(n<=5000&&!nth){

for(vari=0;i<100;i++){
varj=p.indexOf(n-i);
if(j>-1){returnp.slice(0,j+1)};
}
returnp
}

varm=nth?Math.ceil(n*Math.log(n)+1000):n; //pn∼nln(n)
// for(vari=5001;i<=m;i+=2){
vari=5001;
while(i){
vart=Math.floor(Math.sqrt(i)),pl=p.length;
for(varj=0;j<pl;j++){//p.length
if(i%p[j]==0){
break
}elseif(p[j+1]>t){
p.push(i);
if(nth&&pl==n-1){
returni
}
break;
}
}
if(!nth&&i>=n-1){
returnp
}
i+=2;
}
returnp


//方法3:Wilson测试


}

❾ java判断质数

不知道你要的是不是这种效果,程序在你的基础上做了一些修改,在你的基础上增加了假如输入的不是一个数时做什么处理,输入“back”时返回,你可以拿去把程序修改的更完善。。你说的方法都可以调用,在 main方法里面需要new一个对象来调用,除非你把方法定义为静态方法(static)。。
import java.util.Scanner;

public class Prime_Decide {

public void isPrime(String st) { // 判断int整形a是否是素数
try {
if (st.equals("back")) {
Display();
} else {
int a, i;
a = Integer.parseInt(st);
for (i = 2; i <= a / 2; i++) {
if (a % i == 0) {
break;
}
}
if (a == 0) {
System.out.println(a + " 你输入的数不是素数");
} else if (i > a / 2) {
System.out.println(a + " 你输入的数是素数");
} else {
System.out.println(a + " 你输入的数不是素数");
}
Input1();
}
} catch (NumberFormatException e1) {
System.out.println("请你输入正确的数字!!!");
Input1();
}
}

public void isPrime_2(String s1, String s2) {
try {
if (s1.equals("back")) {
Display();
} else {
int a = Integer.parseInt(s1);
int b = Integer.parseInt(s2);
if (a < 0 && a == b && a < b) {
System.out.println("你的输入有误,重新输入:");
}
int j;
for (int i = a; i <= b; i++) {
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
break;
}
}
if (j > i / 2) {
System.out.println(" " + i + " 是素数");
}
}
Input2();
}
} catch (NumberFormatException e) {
System.out.println("请你输入正确的数字!!");
Input2();
}
}

public void Input1() {
System.out.println("请输入你要进行判断的数:");
Scanner sc = new Scanner(System.in);
String st = sc.nextLine();
isPrime(st);
}

public void Input2() {
// int a, b;
System.out.println("请输入上界 a= ");
Scanner sc = new Scanner(System.in);
// a = Integer.parseInt(sc.nextLine());
System.out.println("请输入下届 b=");
Scanner st = new Scanner(System.in);
// b = Integer.parseInt(st.nextLine());
isPrime_2(sc.nextLine(), st.nextLine());
}

public void Display() {
System.out.println("请输入你要进行的数的判断:\n1: 单个数的判断\n2: 一段整数范围的判断\n3: 退出");
try {
Scanner sc = new Scanner(System.in);
int c = Integer.parseInt(sc.nextLine());
if (c == 1) {
Input1();
} else if (c == 2) {
Input2();
} else if (c == 3) {
System.exit(1);
} else if (c != 1 & c != 2 & c != 3) {
System.out.println("你输入如的信息有误,请重新输入1、2、3!");
Display();
}
} catch (NumberFormatException e) {
System.out.println("你输入如的信息有误,请重新输入1、2、3!");
Display();
}
}

public static void main(String[] args) {
Prime_Decide pr = new Prime_Decide();
pr.Display();
}
}

希望对你有帮助!!

热点内容
我的世界服务器联机ip 发布:2024-05-02 18:50:39 浏览:618
steam密码从哪里看 发布:2024-05-02 18:50:00 浏览:629
convertlinux 发布:2024-05-02 18:20:00 浏览:705
zxingandroid简化 发布:2024-05-02 17:47:53 浏览:189
贵州银行卡查询密码是什么 发布:2024-05-02 17:47:17 浏览:119
飓风算法没用 发布:2024-05-02 17:41:41 浏览:350
android铃声设置 发布:2024-05-02 17:40:01 浏览:485
php日记本 发布:2024-05-02 17:28:22 浏览:850
msc拒绝访问 发布:2024-05-02 17:19:09 浏览:122
php函数漏洞 发布:2024-05-02 17:15:26 浏览:963