java编程,判断n不是质数,循环让n除以n一半以下的数,有余数就不是质数,没有就是质数,方法如下:
public class TestA {
public static void main(String[] args){
//定义一个数
int n=101;
//遍历这个数的n/2+1次,除以n一半以下的数都除不尽就是质数
for(int x=2;x<=(n/2+1);x++){
//n%x取余等于0就不是质数,则退出循环
if(n%x==0){
System.out.println(n+"不是质数!");
break;
}
//x等于最大值,可知n是质数
if(x==(n/2+1)){
System.out.println(n+"是质数!");
}
}
}
}
结果:
101是质数!
import java.io.BufferedReader;
import java.io.InputStreamReader;
class InputData{
private BufferedReader buf = null;
public InputData() {
this.buf = new BufferedReader(new InputStreamReader(System.in));
}
public int getInt(String msg, String err) {
int temp = 0;
boolean flag = true;
while (flag) {
System.out.print(msg);
try {
String str = this.buf.readLine();
if (str.matches("\\d+")) {
temp = Integer.parseInt(str);
flag = false;
} else {
System.out.print(err);
}
} catch (Exception e) {
}
}
return temp;
}
}
class IsNum{
public static String isTrue(int num){
for(int i=2;i<=Math.sqrt(num);i++){
if(num%i==0){
return num+"不是质数!";
//break;
}
}
return num+"是质数!";
}
}
public class test {
public static void main(String[] args) {
InputData input= new InputData();
int num=input.getInt("请输入要判断的数字:","输入的不是数字!");
String str=IsNum.isTrue(num);
System.out.println (str);
}
}
还可以判断再少一点,就是,2~根号下n 之间的数有没有可以被整除的
public boolean isPrime(n){
for (i = 2; i<= Math.sqrt(n); i+=2){
if(n%i == 0){
return false;
}
}
return true;
}
抓住两个条件:
1.质数,除了1和自己,没有别的约数。
2.约数除了自己,一般都是不大于自己的一半的。
那么,你是否就该明白,整数n,在1~n/2之间做循环,如果在这个区间里一个数i,并且有n%i==0;则说明该整数不是质数。
(注意,1,既不是质数也不是合数。如果n=2,做特别处理)
代码吗,自己整,授之以渔。希望问题帮你解决了。
boolean isPrime = true;
for (i = 2; i<= n/2; i+=2){
if(n%i == 0){
isPrime = false;
break;
}
}