题目:
判断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个素数