黑马程序员技术交流社区
标题:
入学测试题,小技巧。
[打印本页]
作者:
coolmiao13
时间:
2015-2-12 23:23
标题:
入学测试题,小技巧。
本帖最后由 coolmiao13 于 2015-2-12 23:25 编辑
package com.itheima;
/**
*题目:
* 5、 编程打印所有的3位质数,质数特点:只能被1和其本身整除
* *@author XXX
* 思路:审题,什么是质数,只能被自己和1整除。
* 打印所有的三位质数,就是圈定了一个范围,打印所有的三位数的质数。范围在100与999之间。
* 写个外循环循环这个三位数,内循环来判断是否是质数。
* 内循环直接判断1到本身之间的数的取模,不考虑1和本身,模0,那么就做个标记。(后来发现不用,直接下一次外循环就 哦了。)
* 内循环完,判断标记,如果是质数打印出来。
*/
public class Test5 {
public static void main (String[] args){
new ZhiShu();//第一次跟随思路写出的代码运行结果
new ZhiShu1();//简化完代码运行的结果
}
}
//
class ZhiShu {
ZhiShu (){
System.out.println("所有的三位质数有:");
//对100到999进行遍历
for(int num=100;num<1000;num++)
{
int Flg=0;//设置一个旗帜,用来简化代码。
//从1到本身之间取数,判断是否为质数。
b:for (int i=2;i<num;i++)
{
//System.out.println(i);
if((num % i) == 0)//取模,如果模为0,那么证明有数字可以整除。这个数不是质数。
{
Flg = 1;//对标志赋值,后面判断用
break b;//跳出内循环
}
else
Flg=0;//如果没有数可以整除,标志为0
}
if (Flg==0)//判断标志,为0就是质数进行打印
{
System.out.print(num+" ");//由于数字比较多,那么就打印1排好了
}
}
System.out.println();
}
}
/**突然想起来如果用continue,那么代码就会简单很多,省略了标志判断的过程。
* 简化完的代码,爽爆了。
*/
class ZhiShu1 {
ZhiShu1 (){
System.out.println("简化完代码后,所有的三位质数有:");
//对100到999进行遍历
a:for(int num=100;num<1000;num++)
{
//从1到本身之间取数,判断是否为质数。
for (int i=2;i<num;i++)
{
//System.out.println(i);
if((num % i) == 0)//取模,如果模为0,那么证明有数字可以整除。这个数不是质数。
{
continue a;//既然不是质数,后面的就不做了,进行下一次外循环。
}
}
System.out.print(num+" ");//内循环计算完,证明这个数是质数。打印质数
}
System.out.println();
}
}
复制代码
作者:
coolmiao13
时间:
2015-2-12 23:26
给自己顶一个,这个题目太简单了,但是呢,发现具有优化的可能。
当两个程序员比较的时候,有经验的人会用更简单和方便维护的方法写出更有效率的代码,这个应该就是经验了。
作者:
BEIKOU
时间:
2015-2-13 07:09
给楼主顶一个
作者:
书生灬流年
时间:
2015-2-13 09:30
顶一个!!!!!!
作者:
wenyu
时间:
2015-2-13 11:51
不错 ,加油
作者:
Ansel
时间:
2015-2-14 08:20
恩是的,代码要高效简洁。
作者:
liuka
时间:
2015-2-14 08:23
不错楼主!
作者:
书生灬流年
时间:
2015-2-14 08:57
谢谢分享!
作者:
a986875894
时间:
2015-2-14 09:23
package cn.itcast.Test;
public class Test {
public static void main(String[] args) {
int count = 0;
for (int i = 99; i <= 999; i++) {
for (int j = 1; j <= i; j++) {
if (i % j == 0) {
count++;
}
}
if (count <= 2) {
System.out.println(i);
}
count = 0;
}
}
}
复制代码
我是这么写的 不知道对不对
作者:
yueLife_1993
时间:
2015-2-14 23:18
顶一个。。。
作者:
jiao
时间:
2015-2-14 23:52
优化后确实简单多了
作者:
qiuyuhuaihua
时间:
2015-2-14 23:57
a986875894 发表于 2015-2-14 09:23
我是这么写的 不知道对不对
我感觉还可以优一下,内循环可以只到i的平方根
作者:
challenge
时间:
2015-2-15 21:12
顶一个。
作者:
coolmiao13
时间:
2015-2-15 22:25
a986875894 发表于 2015-2-14 09:23
我是这么写的 不知道对不对
首先,结果没有问题。就是觉得你的想法有点小误区,判断质数是使用整除法,那么只要1跟本身之间的数由一个可以整除就可以进行下一次了。你使用的方法是判断可以整除的个数。判断出来了也全部循环完毕了。
相比较而言效率较低。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2