问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 判断是否是素数

发布网友 发布时间:2022-04-24 11:25

我来回答

5个回答

热心网友 时间:2023-08-03 20:09

判断number是否是素数有这么几种方法:
(1)用2至number-1之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(2)用2至number/2之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(3)用2至number的平方根之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。

这3种的方法的效率是逐渐提高的。下面列出了第3种方法的实现:
import java.util.Scanner;

public class Test2 {

public static void main(String[] args) {
int number; // 输入的数字

Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt(); // 输入数字

if(isPrimeNumber(number)){
System.out.println(number + "是一个素数");
}
else{
System.out.println(number + "是一个非素数");
}
}

public static boolean isPrimeNumber(int num){
if(num < 2){
System.out.println("数据错误");
return false;
}

int k = (int)Math.sqrt(num); //num的平方根
int i;
for(i=2; i<=k; i++){ //依次用2..k之间的数去整除num,如果没有一个数能被整除,说明num是素数
if(num % i == 0){
break;
}
}
if(i > k){
return true;
}
return false;
}
}

如果对你的程序进行修改,也可这样:
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;

Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字

for(j=2;j<number;j++){

if(number%j == 0) {

System.out.println("这不素数");
break;
}
}
if(j>=number)
System.out.println("这是素数");
}
请采纳答案,支持我一下。追问虽然你并没有解释我的疑问,但很高兴我又知道了两种方法,谢谢你

热心网友 时间:2023-08-03 20:09

一个数n,他自己的一半n/2,是他除1以外可以整除的极限。比n/2大的数,假设为m。那么n/m的结果大于1小于2。所以判断到j<i/2就可以了。

热心网友 时间:2023-08-03 20:10

很简单啊,当j=i/2的时候,i除以j得到的结果就是2,j>i/2的时候,得到的结果只能是1到2之间的非整数了。所以没必要再判断了。追问已经明白了,谢谢,不过。。。。。没金币了,真的很不好意思。

追答没关系,我表达的也不太好,你采纳的那个人说的比我清楚

热心网友 时间:2023-08-03 20:10

假如有400这个数字,他的一半是200,400除以[200-400]区间的数字,JAVA中取整后总是为1,那么还有必要去循环这么多次吗,这是个分界点追问我明白了,谢谢

热心网友 时间:2023-08-03 20:11

你这写的是对的吗?运行过?没问题?,,,你说句话,感觉问题蛮严重。追问这个是没问题的,书上写的,运行过了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离焦和普通镜片的区别 昨夜星辰昨夜风,画楼西畔桂堂东.身无彩凤双飞翼,心有灵犀壹点通 后面的... “昨夜星辰昨夜风,画楼西畔桂堂东。”是什么意思_出处及原文翻译_学 ... 春捂养生吃什么?春不捂好易宫寒严重者或致不孕! 吃什么滋阴养颜 四种滋阴的食物最适合女性主妇网 5种食物来帮忙,滋阴补肾更健康 十大滋阴补气保健食材推荐 女性滋阴润燥最好的10种补品有哪些_百度知 ... 500g肉松紫米饭团的大小 下雨天的心情说说经典 三文鱼的胆固醇高吗 java素数的判断 用java判断素数 java中判断素数 java判断素数 java 判断素数 用JAVA编写一个判断素数的程序 java 判断是不是素数? java怎么判断素数 电脑字体如何最大 电脑字体如何设置? 电脑的字体如何更改 支付宝APP中的“蚂蚁保险”是保险吗?不是保险为什么要起“保险”之名?它关联的“相互宝”是干什么的? 用ps和美图秀优化文件大小后文件没有变化 如何把图片kb变大但同时保证像素在100~200kb之间_百度问一问 想看所有电视台直播下载什么手机软件好? 健身房的智能物联网设备具体是指哪些? 物联网时代下,智能设备都有哪些? 签约客户的物联网设备是什么意思?&#xF633; 物联网设备的常见网络连接方式有哪些?它们有什么特 点? 智慧农业物联网需要有什么设备? 手机、平板等移动设备在物联网智能家居中有什么作用? Java:判断素数 用java编写一个程序段,输入一个自然数,判断该数是否为素数. JAVA编程 判断素数 用java 怎么判断一个数是否为质数? java题目 判断素数 java里怎么实现素数? 用JAVA编写判断素数的程序 在java中如何判断一个数是不是素数 滇红中的中国红汤色金黄是不是假的 珍古滇红的红茶跟滇红茶有什么区别? 如何区分滇红茶的种类? 中国红滇红怎么定义 怎么清理虚拟内存? 怎么清理电脑中的虚拟内存? 虚拟内存满了怎么清理? 如何清理虚拟内存?总是空间不足不足的 win10怎么清理虚拟内存 如何快速清理虚拟内存? 怎么清理电脑虚拟内存? 黄花菜的种类有哪些?