public class WangShu {

/**
* @param args
*/
public static void main(String[] args) {

for (int i = 1; i < 1000; i++) {
int sum = 0;
for (int j = 1;

展开全部
收起
5回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 万劫

    19人对此回答表示赞同

    最简单的,你代几个数字进去就知道了。你这程序的目的是
    求约束的和,一个数的约束除了自己,就没有大于它自己一半的了。所以就没有必要循环i/2之后的了,减少了程序的运行时间。
    展开
    19
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Yuan0

    18人对此回答表示赞同

    从你的程序来看,你的目的是求约数的和吧。
    来举个例子,求10约数之和。
    能整除的有
    10=1X10
    10=2X5

    10=5X2
    10=10X1
    可是约数只有1,2,5,也就是约数<=(10/2)
    因为当约数>(10/2)时,计算的就是重复了。
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 置之度外

    12人对此回答表示赞同

    不是不行,而是没有必要,因为结果是一样的。

    这一步要找的是真因子,n以内的数有已(n/2 + 1)为真因子的数吗?没有,它最小是n+2超过n了。

    所以i/2以后的循环不用走了。
    展开
    12
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 钱可为

    6人对此回答表示赞同

    可以是i,但是你再看一下你的条件,如果j>i/2,那么i%j==0就一定是false,及后边的i/2次循环式无用的,所以用j<=i/2。
    展开
    6
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 徐子衿

    6人对此回答表示赞同

    因为一个数整除另一个数,被整除的那个数肯定小于这个数,所以一定不超过一半,因为被整除的话,最小的公约数就是2,所以就是小于一半,知道了吧,开始的时候我也想不通,不过现在可以了 追问
    展开
    6
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部