题目2:判断素数并输出

题目:

判断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个素数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,174评论 0 41
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,963评论 0 2
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 1,211评论 0 0
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    磨砺营阅读 714评论 0 6
  • 【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子...
    Xplorist阅读 699评论 0 2