本帖最后由 黑骏马 于 2013-8-19 09:04 编辑
你的代码,在内层for循环中,第一次满足i%j==0后,b的值变成false,之后不会再改变,if(b){sum+=i}不会被执行,直至内层循环结束,i++后b变为true,再次进入内层for循环,第一次满足i%j==0后,b的值再变成false,不再改变……
根据你的代码的意思,应该把bool b = true;移到内层for循环中:- public static int GetSum()
- {
- int sum = 0;
- for (int i = 2; i <= 100; i++)
- {
- //bool b = true;//return 66705
- for (int j = 2; j < i; j++)
- {
- bool b = true;//return 311471
- if (i % j == 0)
- {
- b = false;
- }
- if (b)
- {
- sum += i;
- }
- }
- }
- return sum;
- }
复制代码 其实代码完全可以简化一下这样写意思更清楚:- public static int GetSum()
- {
- int sum = 0;
- for (int i = 2; i <= 100; i++)
- {
- for (int j = 2; j < i; j++)
- {
- if (i % j != 0) //这样写意思不是更清楚明白吗?
- {
- sum += i;
- }
- }
- }
- return sum;//311471
- }
复制代码 2楼小天的结果为什么是32489?比楼主的代码计算的结果还小。
。
|