求解释一个java程序,这个程序是求100以内的素数的。我没看懂这个条件怎么判断出素数的,请高手解释下。
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称为合数。1和0既非素数也非合数...
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称为合数。1和0既非素数也非合数。质数是与合数相对立的两个概念,二者构成了数论当中最基础的定义之一。
展开
3个回答
展开全部
翻译如下
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 这样才正确,目的就是为了确认已全部循环完毕。确认没有可以整除的数。
一个错的题,居然都没有发现。。哎。。
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 这样才正确,目的就是为了确认已全部循环完毕。确认没有可以整除的数。
一个错的题,居然都没有发现。。哎。。
追问
一个错的题,居然都没有发现。。哎。。 ?
说明白点 题哪里错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j<=i/2-------因为i的因数必然是小于或等于i的一半的,然后一个一个的去除,有余数为0的就不是的。
j>i/2-------是指当上面循环完成后,如果J不大于i的一半,那么J就是i的因数,而当j大于i的一半是表明一直到循环完成,j都从未被i整除过,所以i是质数
j>i/2-------是指当上面循环完成后,如果J不大于i的一半,那么J就是i的因数,而当j大于i的一半是表明一直到循环完成,j都从未被i整除过,所以i是质数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询