黑马程序员技术交流社区
标题:
求质数的问题 想改进一下没什么头绪
[打印本页]
作者:
格子、
时间:
2014-5-17 20:19
标题:
求质数的问题 想改进一下没什么头绪
本帖最后由 格子、 于 2014-5-18 05:39 编辑
/*
需求:
打印输出三位数的质数
思路:
1.三位数的质数,范围应该为100~1000
2.质数只能被1和自身整除
3.判断质数可以用计数器
*/
class Demo
{
public static void main(String[] args)
{
//确定范围100~1000
for(int x = 100;x<1000;x++)
{
//定义计数器
int num = 0;
for(int y=1;y<34;y++)
{
//让他们除以1~是因为有的可能有约数存在 目前没有想到合适的条件 这样效率比较低下
//如果能整除就+1
if(x%y==0)
num++;
}
//质数只能被1或自身整除,只要计数器为1 就可以确质数
if(num<2)
System.out.print(x+"\t");
}
}
复制代码
就是计算器判断计数器条件那,刚开始我之前判断的是到9 ,可是有几个不是质数的,于是就试着改了几个数,因为想到1000的最大公约数是33,可还是最大公约数是两个数,这么说有点牵强,现在思维有点乱!!!!!!!虽然结果是对的,但是我给说的过去的条件,求大家指点一下,不胜感激
作者:
张斌
时间:
2014-5-17 21:23
public class Test5 {
/**
* 5、 编程打印所有的3位质数,质数特点:只能被1和其本身整除
* @param args
*/
public static void main(String[] args)
{
//定义一个标记;
boolean flag;
//定义一个for循环,可以遍历到所有的三位数整数
for(int i=100;i<=999;i++)
{
//到开始时把标记置为真。
flag =true;
//定义一个除了1以外的所有整数除数循环
for(int j=2;j<=Math.sqrt(i);j++)//这个Math.sqrt(i)表示取任意数
{
// 判断除了1以外的整数相模的数是否为0
if(i%j==0)
{
// 如果满足条件将不是质数,将标签置为假,不打印数据,且跳出循环
flag =false;
break;
}
}
// 当标签为真是打印的为质素。
if(flag)
{
System.out.print(i+"\t");
}
}
}
}
作者:
格子、
时间:
2014-5-18 05:38
张斌 发表于 2014-5-17 21:23
public class Test5 {
/**
哥们,谢啦,你的任意数提醒了我,现在问题已经解决啦!修改后的代码如下
class Demo
{
public static void main(String[] args)
{
//确定范围100~1000
for(int x = 100;x<1000;x++)
{
//定义计数器
int num = 0;
//让x除以1到自身
for(int y=1;y<x+1;y++)
{
//如果能整除就+1
if(x%y==0)
num++;
}
//质数只能被1或自身整除,所以只要计数器为2 就可以确质数
if(num==2)
System.out.print(x+"\t");
}
}
复制代码
作者:
小小6456
时间:
2014-5-18 10:00
学习了。。。。。。
作者:
流沙
时间:
2014-5-18 10:08
好想法啊哈哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2