黑马程序员技术交流社区

标题: 求教一个程序的逻辑问题 [打印本页]

作者: a302550641    时间: 2016-3-8 20:38
标题: 求教一个程序的逻辑问题
题目是昨天论坛的问题,输出素数。捉摸了好久,还目前还没学到那里,不清楚问题出在哪

package luntan;
/*
* 分析以下需求,并用代码实现:
*      (1)打印1-100之间的所有素数及个数
*      (2)每行输出5个满足条件的数,之间用空格分隔
*      (3)如果一个大于1的自然数,这个数只能被1和其本身整除,这个数就叫素数。
*      (4)如:2 3 5 7 11
*/
public class Sushu {
        public static void main(String[] args) {
                        prime(100);               
        }
        public static void prime(int num){
                //System.out.println("素数的个数为: "+row);
                for(int i=2,temp=0;i<=num;i++){        //i是当前数字,m是从1到i. temp判断是不是素数
                        int row=0;
                        for(int m=1;m<=i;m++){                        //遍历i,
                                if(i%m==0){                                                //如果i/m余数为0,整除,temp自加
                                        temp++;
                                }
                                if(temp<=2){                                //如果i整除m的次数小于等于2,则是素数
                                        System.out.print(i+" ");
                                        row++;//每行5个数,row自加
                                }
                                if(row==5){                                                //够5个数    换行
                                        System.out.println();
                                }else{
                                        break;
                                }
                        }
                       
                }
        }
}

输出素数个数的方法没写,就写了5个一行输出每个素数,还没写好····
作者: a5597698    时间: 2016-3-8 21:24
稍微改进了一下,你试一下看能不能用       
public static void main(String[] args) {
                // TODO Auto-generated method stub
                   prime(100);               
    }
    public static void prime(int num){
            //System.out.println("素数的个数为: "+row);
                    ArrayList<Integer> al =new ArrayList<>();
            for(int i=2;i<=num;i++){        //i是当前数字,m是从1到i. temp判断是不是素数
                    int temp=0;                                        //这里temp要单独写,不要写在for()里
                    for(int m=1;m<=i;m++){                        //遍历i,
                            if(i%m==0){                                                //如果i/m余数为0,整除,temp自加
                                    temp+=1;
                                    }   
                            }
                    if(temp<=2){                                //如果i整除m的次数小于等于2,则是素数
                        System.out.println(i+"是素数");
                        al.add(i);                                //将素数添加进集合
                    }
            }
            for (int i = 1; i < al.size(); i++) {                        //遍历集合
                    System.out.print(al.get(i) + ",");                        //在控制台打印每一个数
                    if(i%5==0){                                                                        //如果打印数有5个了,就换行
                    System.out.println();
                                        }
                    }
                    }
            }
作者: 365708064    时间: 2016-3-8 21:37
学习学习,这个题有点复杂,挺有意思




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