请帮忙分析一下!!谢谢了!

zhoutt1989 2009-09-19 05:16:19

import java.io.*;
public class MathEx {

/**
* Creates a new instance of <code>MathEx</code>.
*/
public static void checkPrime(int num){
boolean isPrime=true;
int i=0;
for(i=2;i<=Math.sqrt(num);i++){
if(num%i==0)
{isPrime=false;
break;}
if(isPrime)
System.out.println(num+"是质数");
else
System.out.println(num+"不是质数");
}
}
public MathEx() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception{
// TODO code application logic here
System.out.print("请输入1个整数:");
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
int num=Integer.parseInt(br.readLine());
br.close();
isr.close();
MathEx.checkPrime(num);
}
}


结果:请输入1个整数:15
15是质数
这个是正确的,
但是如果输入16,16不是质数
结果:
请输入1个整数:16

Process completed
为什么不输出“16不是质数”呢?
...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
daisycool 2009-09-19
  • 打赏
  • 举报
回复
先不说你质数判断的对或不对。 当你得出isPrime = false;之后,有一个break; 这就是为什么不打印“不是质数”,因为还没打印就跳出了。


程序帮你稍微改了一下

public class PrimeTest {

/**
* Creates a new instance of <code>MathEx</code>.
*/
public static void checkPrime(int num) {
boolean isPrime = true;
int i = 0;
for (i = 2; i < num; i++) {
if (num % i == 0) {
isPrime = false;
break;
}
}
if (isPrime)
System.out.println(num + "是质数");
else
System.out.println(num + "不是质数");
}

/**
* @param args
* the command line arguments
*/
public static void main(String[] args) throws Exception {
if (args.length < 1) {
System.out.println("A number is required to run this program.");
}

int num = Integer.parseInt(args[0]);
PrimeTest.checkPrime(num);
}
}

弘石 2009-09-19
  • 打赏
  • 举报
回复
呵呵
gesanri 2009-09-19
  • 打赏
  • 举报
回复
15是质数?。。。 你知不知道什么是质数啊,不能被从2开始到开方的任一数整除(2除外),15能被3整除啊


import java.io.*;
public class MathEx {

/**
* Creates a new instance of <code>MathEx</code>.
*/
public static void checkPrime(int num){
boolean isPrime=true;
int i=0;
for(i=2;i<=Math.sqrt(num);i++){
if(num%i==0)
{isPrime=false;
break;}

}
if(isPrime)
System.out.println(num+"是质数");
else
System.out.println(num+"不是质数");
}
public MathEx() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception{
// TODO code application logic here
System.out.print("请输入1个整数:");
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
int num=Integer.parseInt(br.readLine());
br.close();
isr.close();
MathEx.checkPrime(num);
}
}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧