题目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