
import javautilScanner;
//质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
public class PrimeNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(Systemin);// 扫描器,接收控制台输入信息
Systemoutprint("请输入一个整数:");
try {
int num = scannextInt();// 取出控制台输入的信息
if (isPrime(num)) {// 调用isPrime()方法
Systemoutprintln(num + "为素数!");// 若isPrime()方法返回true,输出是素数
} else {
Systemoutprintln(num + "不为质数!");// 若isPrime()方法返回false,输出不是素数
}
} catch (Exception e) {
Systemoutprintln("请输入整数");// 捕捉异常,若输入的不是整数,输出异常
}
}
/
用于判断一个数是否为素数,若为素数,返回true,否则返回false
@param num 输入的值
@return true、false
/
public static boolean isPrime(int num) {
boolean flag = true;
if (num < 2) {// 素数不小于2
return false;
} else {
for (int i = 2; i <= Mathsqrt(num); i++) {
if (num % i == 0) {// 若能被整除,则说明不是素数,返回false
flag = false;
break;// 跳出循环
}
}
}
return flag;
}
}
抓住两个条件:
1质数,除了1和自己,没有别的约数。
2约数除了自己,一般都是不大于自己的一半的。
那么,你是否就该明白,整数n,在1~n/2之间做循环,如果在这个区间里一个数i,并且有n%i==0;则说明该整数不是质数。
(注意,1,既不是质数也不是合数。如果n=2,做特别处理)
代码吗,自己整,授之以渔。希望问题帮你解决了。
else
if(num1%2!=0&&(num1+1)%2==0){
Systemoutprintln(num1+"是质数");
}
else{
Systemoutprintln(num1+"不是质数");
15%2=1,
(15+1)%2=0
->
15是质数
修改:
//前面略
else
{
int
flag=1;
for(int
j=2;
jj<=num1;
j++)//这是质数的判断方法,只要除到这个数的开根号的数为止即可
if
(num1%j==0){Systemoutprintln(num1+"不是质数");
flag=0;
break;}
if(flag)
Systemoutprintln(num1+"是质数");
}
//后面略
应该是有函数吧
建议直接百度搜索
逻辑存在很大的问题,判断质素的守则是除了本身和1,其他数都不能将自己整除,所以楼主你应该做的事情是将你输入的数循环与2开始到你输入的数-1的数依次比较,有一次整除没有余数就说明不是素数。按照你的代码修改应该是:
bool flag=false;
for(int i=2;i<num;i++)
{
if(num%i==0)
{
flag=true;
break;
}
}
接下来判断flag的值,如果是 true代表不是质数,flase的话代表是质数
以上就是关于Java语言程序,输入一个大于3的正整数,判断其是否为质数,若是输出“xx数为质数”否则输出“xx数不为质数全部的内容,包括:Java语言程序,输入一个大于3的正整数,判断其是否为质数,若是输出“xx数为质数”否则输出“xx数不为质数、用JAVA编写程序:“判断n是不是质数”、JAVA 编程方法解决“ 输入一个数判断它是否是质数”等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)