java 题目求高手解答

任意输入一个整数,判断该数是质数还是合数?
质数的标准是:能被1整数并且能被自身整除的数.
合数的标准是:能被1整除也能被自身整除并且还能被其他数整除.
小弟刚接触JAVA 能学了单成循环 和 IF多重语句.苦恼了半天,请高手指点
小弟感谢不尽;
完全可以解出来的 这是作业题! 如果你不会就不要说解不出来,不能帮忙的不要说废话!
小弟在线等

第1个回答  2008-09-03
1楼的算法有些错误,i<=j/3是不正确的,应该是小于j的平方根(程序中取整)int zhongjian=(int)Math.sqrt(j);
2楼的算法虽然能执行,但是从平方根到j之间的循环属于无效循环,算法效率太差。
修改一楼代码后是正确的:
public static void judge(int j){
boolean isPrime=false;
int zhongjian=(int)Math.sqrt(j);
for(int i=2;i<=zhongjian;i++){
if(j%i==0){
System.out.println(j+"是一个合数!");
isPrime=true;
break;
}
}
if(!isPrime){
System.out.println(j+"是一个质数!");
}
}
第2个回答  2008-09-03
我来解释为什么是平方根吧
一个数a = b * c 那么必然 b<=a,c<=a;
如果说 b<=根号a,那么c必然>=根号a
既然有一个小的约数 那么必然大的约数也存在 根号a是一个分水岭
不知道表述清楚没
第3个回答  2008-09-03
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class heshu {

public static void main(String[] args) {
System.out.println("press a number: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
while (!(str = br.readLine()).equals("exit")) {
try {
int num = Integer.parseInt(str);
if (isZhiShu(num)) {
System.out.println("质数");
}
} catch (NumberFormatException e) {
System.out.println("only input a number");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}

private static boolean isZhiShu(int num) {
if (num == 0) {
System.out.println("我也忘了是不是质数了.");
} else {
for (int i=2; i<num; i++) {
if (num%i == 0) {
System.out.println("合数");
return false;
}
}
}
return true;
}

}
第4个回答  2008-09-04
呵呵 我是一楼的! 看了lkt1002、doorsky123二位的答案以后很受启发,那么答案应该是如lkt1002所写的那样 完全正确!
特别感谢doorsky123朋友的分析,讲得很清晰,学习了 ~~~!!本回答被提问者采纳

java选择题,求java高手解答,必采纳,闲人勿扰,最好能有解释。
1、C new 关键字 创造对象实例 2、A B 选项里已经说的很清楚 3、A B 4 a b c d 5 c 6 错 传递的是对象的引用,一旦改变将影响全局。7.对 有的构造方法私有 8 对 9 错,默认无惨构造方法 10 错 类中除了 成员变量和方法 还可以有代码块,内部类 等 11 对 12 对 ...

java基础面试题:请高手前来帮忙解答
list.add(String.valueOf(50))你要明白List<String> 的含义,它的意思就是把你添加的数据给控死了,只能为String类型,添加Integer类型的肯定是不行的 ,除非你修改一下,改成List list=new ArrayList();在add就没问题了

java求高手解答??运行后怎么没有反应?
if语句有错,后面根本不执行。

Java 关于PrintWriter,求高手解答
1.所谓的格式化表现形式,指的是PrintWriter 中format(String format, Object... args)和format(Locale l, String format, Object... args) 的字符串格式化方法。详情请参见String.format()的用法。例如,可以将一个double型数据以保留两位小数,前面用0补齐10位这样的格式输出。如:System.out.println...

JAVA随机分组程序 求高手解答 ,本人菜鸟级学生,可以的话加些注释。谢 ...
这种要求得代码只有两种人会给答案 第一种:有现成代码并且良心发现愿意贡献出来的 第二种:闲着没事吃饱了时间特别多的

java代码,出错,死循环,求高手解答
y = y++;出错,改为y++ x = x++;出错。改为x++ 区别就是y++ 和++y

3道JAVA 小程序题,求高手解答!!
import java.util.Scanner;public class Du { public static void main(String[] args) throws Exception { first();} private static void first() throws Exception {\/\/第一道题 System.out.print("Please input a digt between 0 and 9: ");int input = new Scanner(System.in).nextInt(...

java题 求高手解答 谢谢
int k=100; for(int i=1;i<=Math.sqrt(k);i++ ){ if(k%i==0){ System.out.println(i+" * "+(k\/i) +" = "+ i); } } }k就是你要的数字,原理,对该数模运算等于0就是能整除的

求java高手解答
import java.math.BigDecimal;\/** * 1.%[argument_index$][flags][width][.precision]conversion * * String.format("%1$s",1234,5678); 指向第一个参数转换为字符串 * String.format("%1$s%2$s",1234,5678);将两个参数格式化为字符串,并连接在一起 * String.format("%s",1234,5678); 指向第一...

java高手来啊,字符串相等问题
先说第一点 String对象是不可变的。String类中每一个看起来会修改String值的方法,实际上的都是创建了一个全 新的String对象。而用于String的+和+=是java中仅有的两个重载过的操作符。而java(1.6)编译器是 通过引入StringBuilder(你可以打开你所写的class文件看字节码,里边肯定会有invokespecial和...

相似回答