黑马程序员技术交流社区
标题:
素数的查找(2个for循环解决)
[打印本页]
作者:
lanbuohan
时间:
2013-7-8 02:01
标题:
素数的查找(2个for循环解决)
本帖最后由 杨兴庭 于 2013-7-8 12:27 编辑
刚查有一个问题自己没有弄明白,错把奇数当做的素数,感谢帮助我指出问题的人,我看的一下大家在便利0~~100这个
整数的所有素数时,方法都有一些麻烦,我去查找的一下,这是别人写得一个代码,大家看一下,个人觉的很简洁:
for (int i = 2; i <100; i++)
{
for (int j = 2; j <= i; j++)
{
if (i == j)
{//
System.out.println(i);
}
if (i % j == 0)
{
break;
}
}
}
作者:
草貌路飞
时间:
2013-7-8 02:29
这个不简洁,内层循环不用全部判断的,我知道的是只用判断一半就行了,好像还有更少判断的。效果就是:不是素数的就不用说了,怎么写都一样。是素数可以减少判断的次数。
作者:
chensc
时间:
2013-7-8 06:09
学习学习!
作者:
lanbuohan
时间:
2013-7-8 09:43
草貌路飞 发表于 2013-7-8 02:29
这个不简洁,内层循环不用全部判断的,我知道的是只用判断一半就行了,好像还有更少判断的。效果就是:不是 ...
那大家讨论一下怎样让这个循环更加简洁
作者:
HM张博文
时间:
2013-7-8 22:32
public static boolean isPrime(int i)
{
for (int j = 2; j <=Math.sqrt(i); j++) //i=2是素数,循环不执行因为如果一个数不是质数那么它是两个数的乘积。
//这两个数一定有一个小于等于sqrt(),因此只要找较小的银子就可以了
{
if (i % j == 0)
return false; //能整除说明不是素数,返回false
}
return true;
}
}
复制代码
素数问题啊,我给你来个更简洁的方法,定义一个方法吧
作者:
lanbuohan
时间:
2013-7-9 01:16
public staic boolean isPrime(int i)
{
//你输入一个你要判断的数字I;
//素数除了1和此整数自身外,无法被其他自然数整除的数
//那有可能被整出的数一定是在2~~I之间。如i=16;那么能整除的数
//就有2,4,8不可能超出16,这样是不就可以减少程序判断吗。
for(int j=2; j<i;j++)
{
//这个还可以对i = 2进行判断
if(i%j == 0)
return false;
}
return true;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2