如题所述
这个是算完数的。 最后面还有一句 if(p=i)
System.out.println( i ); 我就不知道 那二个循环运行的过程, 都搞糊涂了, 希望讲讲谢谢
就是首先,是1到1000的一个循环,也就是遍历1到1000的每一个数字
然后对这1~1000的每一个数再进行一次循环,循环的次数是该数的一半
比如说外层循环到i=50, 那么内层循环就是再循环50/2=25次
为什么要i/2呢,因为要求得i(这里以50举例子)的全部因子,你只要判断50(i)能不能被1~25(1到i的一半)整除,就能求得全部因子。
所以外层循环是1~1000,内层循环是为了求得1~1000中每个数字的因素之和,如果因素之和等于本身,那么就是完数咯。
希望对你有帮助,望采纳谢谢。
...p=0; for(int j=1; j<=i\/2;j++) { if(i%j==0) p=p+j; 这是什么意思...
for就是循环的意思,i = 0:表示i是从0开始循环。i< 1000:表判断,看是否在此范围内,若在,则执行下列语句,否则跳出。i ++ :表示 i 从 0 一直递增。第二个也是一样的意思。这整个要求的其实是求1000以内每一个数的因数之和
C++编程,求1000以内的完数并每行按格式输出其因子:6=1+2+3
int main() { for(int i=1;i<=1000;i++) { int sum=0,a; for(int j=1;j<i;j++) if(i%j==0) { sum=sum+j;\/\/假如找到一个因子就加起来 a=j;\/\/for循环执行完后a就是最大的那个因子 } if(sum==i)\/\/判断因子之和与i是否相等 { cout<<i<<"="; for(int k=1;k<i;k++) if(...
...这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数_百 ...
public static void main(String[]args){ int sum;for(int i=1;i<=1000;i++){ sum=0;for(int j=1;j<i;j++){ if(i%j==0){ sum=sum+j;} } if(i==sum){ System.out.println(i);} } } } 运行结果:
...它的因子之和,这个数就称为"完数"。例如6=1+2+3?
\/\/int factor = 0;for(int i = 1;i <= 1000;i++){ int factor = 0;for(int j = 1;j <= i\/2;j++){ if(i % j == 0){ factor += j;} } if(i == factor){ System.out.println(i);} \/\/重置factor \/\/factor = 0;} 5.外层循环控制行数 内层循环控制列数 for(int...
...i<=n;i++) { for(j=2;j<=i\/2;j++) { if(i%j==0) break; } if(j>...
1.这个内嵌的for语句,当if(i%j!=0)的时候,那个j还做j++吗?答:会,for循环的最后一部分是在昨晚所有的循环体后都会执行的。顺便说一句,如果i%j==0了之后,j++反而不会执行了,因为break已经跳出了。2.会不会跳出循环呢?这是怎么的一个原理?答:此时跳出循环的语句不是break,而是j<=...
...{ int i, j, sum; sum = 0; for (i = 1; i <= 1000; i
"sum = 0;"应放在第1个for语句的循环体中:include "stdio.h"main(){ int i, j, sum;for (i = 1; i <= 1000; i++) { sum = 0;for (j = 1; j < i; j++) { if (i % j == 0) { sum = sum + j;if (sum == i) printf("%d", sum);} } } } ...
输出1000以内的所有的完数
\/*输出1000以内的所有完数并输出其因子*\/ include<stdio.h> int main(){ int sum = 0;for (int i = 1; i <= 1000; i++){ sum = 0;for (int j = 1; j < i; j++){ if (i%j == 0){ sum = sum + j;} } if (sum == i){ printf("%d\\n", i);for (int j =...
其中for(int i=1;i<=n;i++)有什么用 for(int i=1;i<=n;i++)
不重复呀,第一个循环是从1到n,应该是分别求阶乘再求和吧,第二个循环求每一个数的阶乘。
for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ ...} }的时间复杂度为多...
i++就是i自增1的意思。每次循环后i都会自动加1,直到i>=3时就退出循环。循环几次,如分别是i=0,1,2,3,4,5时执行一次printf("a[%d]=%d\\n",i,a[i]);。实例使用了嵌套循环输出2~100之间的素数如下:!\/usr\/bin\/python# -*- coding: UTF-8 -*-i = 2while(i < 100): j =...
For(i=1;i<n;i++) For(j=1;j<i;j++) For(k=1;k<j;k++) X=x+1; 算出...
中层是j从1到i-1,内层是k从1到j-1 里面的表达式是1,因为内部只有x使用了1次 于是化简为两个希格玛的嵌套公式,外层是i从1到n-1,内层是j从1到i-1 里面的表达式是1+2+...+(j-1)=j*(j-1)\/2 继续往下化简就有点麻烦了,涉及到高中数学的特殊数列的求和,你先看看这些能懂不?