求解释一个java程序,这个程序是求100以内的素数的。我没看懂这个条件怎么判断出素数的,请高手解释下。

质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称为合数。1和0既非素数也非合数... 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称为合数。1和0既非素数也非合数。质数是与合数相对立的两个概念,二者构成了数论当中最基础的定义之一。 展开
 我来答
叶叶分飞
2012-10-12 · TA获得超过694个赞
知道小有建树答主
回答量:252
采纳率:0%
帮助的人:181万
展开全部
素数不能被2以上的自然数整除,因此判断N能否被某个自然数整除,只需要判断到N/2即可。比如:
自然数31,31/2算成整形是15。如果31不能被2~15之间的任何一个自然数整除,那么判断31能否被16整除就没有意义了,因为如果能整除,最后的商必须大于等于2,而35除以16~30之间的任何一个自然数商都小于2。所以31是素数。
jicker1986
2012-10-12 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:162
采纳率:100%
帮助的人:103万
展开全部
翻译如下
3个数 0 i j
对i从2到100做循环『
对j从2到i/2 做循环(
如果有数可以被J做整除,那么跳出这个循环。


如果j比i/2大,那么输出i是素数。


整体分析:
这里楼主的关键问题在于你不懂i/2是怎么来的,其实这个i/2也不是固定的,效率最高的写法这个i/2应该改为 Math.sqar(i) = k,将i/2 变成k。

理由是,3×2=6 2×3=6,发现问题了吧,如果有数可以被整除,那么必定有2个差不多的数字在
比如15 3×5 Math.sqar(15) = 3 那么从2-3就够了,如果后面还有,那么必定是前面的和后面的替换一下。

详细分析:
在i<=5的时候 3和5肯定会被输出为素数。
i>=5的时候,比方说13 j是2-6之间循环,那么在上述程序中j是不会被输出的。其实后面那个应该改为 j>=i/2 这样才正确,目的就是为了确认已全部循环完毕。确认没有可以整除的数。

一个错的题,居然都没有发现。。哎。。
追问
一个错的题,居然都没有发现。。哎。。 ?
说明白点 题哪里错了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
73...0@qq.com
2012-10-12
知道答主
回答量:23
采纳率:0%
帮助的人:21.7万
展开全部
j<=i/2-------因为i的因数必然是小于或等于i的一半的,然后一个一个的去除,有余数为0的就不是的。
j>i/2-------是指当上面循环完成后,如果J不大于i的一半,那么J就是i的因数,而当j大于i的一半是表明一直到循环完成,j都从未被i整除过,所以i是质数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式