黑马程序员技术交流社区

标题: 哪位大神看看这个程序哪里错了 [打印本页]

作者: 冯景超    时间: 2015-11-26 23:24
标题: 哪位大神看看这个程序哪里错了
package com.heima.bean;

class Demo1
{
        public static void main(String[] args)
        {
                demo();
               
        }

        public static void demo() {
               
                int num=0;
                for(int i = 2;i <= 100;i ++)
                {
                        for(int j = 2;j <= i;j ++){
                                if(i%j!=0){
                                        break;
                                }                       
                        }                       
                        num++;
                        System.out.println(i);
                }                               
                System.out.println(num);
        }
}



作者: 小地瓜    时间: 2015-11-26 23:35
你想求什么?
作者: 冯景超    时间: 2015-11-26 23:37
小地瓜 发表于 2015-11-26 23:35
你想求什么?

1-100的素数
作者: hansnowqiang    时间: 2015-11-27 12:54
本帖最后由 hansnowqiang 于 2015-11-27 13:03 编辑

兄弟应该是这样的:
public class Demo
{
        public static void main(String[] args)
        {
                demo();
               
        }

        public static void demo() {
               
                int num=0;
               wai: for(int i = 2;i <= 100;i ++)
                {
                        for(int j = 2;j <i;j ++){
                                if(i%j==0){
                                        continue wai;
                                }                  
                        }   
                        
                        num++;
                        System.out.println(i);
                }                                
                System.out.println(num);
        }
}
你的条件有问题: 比如:4除2余0 ,4除3余1,break了,但是前面已经有能够整除的了。我改成了,当i%j等于0(即有可以整除的数字),就continue,证明这个数值不是素数,跳回外循环,到下一个数值。感觉自己狗熊掰棒子,把前面的全忘了。哎,还的回去再看看。

作者: 冰霜之卅    时间: 2015-11-27 13:36
for(int j = 2;j <= i;j ++){
                         if(i%j!=0){
                                       break;
                                }   

单看这一句  没有任何意义。
无论是break 还是 一直循环结束   
都是什么都没有干。   
所以你的内层循环里一定要做些什么对外层循环有影响的事吧?

break :结束当次循环 ,跳出循环。
continue : 结束当次循环,继续下一次循环。   
如果给他们加了标记  就是跳出到标记处。
作者: 冯景超    时间: 2015-11-27 23:07
冰霜之卅 发表于 2015-11-27 13:36
for(int j = 2;j

多谢,我也是晕了
作者: xiaoziyk    时间: 2015-11-27 23:47
应该是==0吧,用!=就不是求素数




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2