题目2:判断素数并输出

作者: Hughman | 来源:发表于2017-02-12 19:29 被阅读68次

    题目:

    判断101-200之间有多少个素数,并输出所有素数。

    程序分析:

    判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

    程序

    package com.ljy.tencent;
    /**
     * 题目:判断101-200之间有多少个素数,并输出所有素数。
     * 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
     * 如果能被整除,则表明此数不是素数,反之是素数。
     * @author liaojianya
     * 2016年9月29日
     */
    public class JudgePrimesNumber
    {
        public static void main(String[] args)
        {
            boolean flag = true;
            int count = 0;
            System.out.println("在101-200之间的素数有:");
            for(int i = 101; i <= 200; i++)
            {
                for(int j = 2; j <= Math.sqrt(i); j++)
                {
                    //如果i能被2~sqrt(i)中的任何一个数整除,则跳出该循环
                    if(i%j == 0)
                    {
                        flag = false;
                        break;
                    }
                    else
                    {
                        flag = true;
                    }
                }
                if(flag)
                {
                    count++;
                    System.out.print(i + ", ");
                }
            }
            System.out.println();
            System.out.println("在101和200之间一共有" + count + "个素数");
        }
    }
    

    优化代码程序:

    package com.ljy.tencent;
    /**
     * 题目:判断101-200之间有多少个素数,并输出所有素数。
     * 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
     * 如果能被整除,则表明此数不是素数,反之是素数。
     * @author liaojianya
     * 2016年9月29日
     */
    public class JudgePrimesNumber
    {    static int count = 0;
        static boolean flag = true;
        public static void main(String[] args)
        {
    
    
            System.out.println("在101-200之间的素数有:");
            for(int i = 101; i <= 200; i++)
            {        
                JudgeFrames(i);
            }
            System.out.println();
            System.out.println("在101和200之间一共有" + count + "个素数");
        }
    
        public static int JudgeFrames(int i)
        {
            if( i == 1)
            {
                flag =false;
            }
            else
            {
                for (int j = 2; j <= Math.sqrt(i); j++)
                {
                    // 如果i能被2~sqrt(i)中的任何一个数整除,则跳出该循环
                    if (i % j == 0 || i == 0)
                    {
                        flag = false;
                        break;
                    }
                    else
                    {
                        flag = true;
                    }
                }
            }
            //如果flag为true则表示i这个数不能被2~sqrt(i)中的数整除,则将prime个数count自增1
            if(flag)
            {
                count++;
                System.out.print(i + ", ");
                //如果打印数目超过10个,则换行
                if(count%10==0){
                    System.out.println();
                }
            }
            return count;
        }
    }
    

    结果输出

    在101-200之间的素数有:
    101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
    在101和200之间一共有21个素数
    

    相关文章

      网友评论

        本文标题:题目2:判断素数并输出

        本文链接:https://www.haomeiwen.com/subject/mrgaittx.html