对“求一定范围内的完数“的理解:
题目:求1000以内所有完数并打印输出;
理解:(1)完数给出的定义为,若一个数等于其所有因子之和,那么这个数就是一个完数。
/*这里的完数不是完全的因子之和,要除了它本身以外的因子(不然所有“因子”加起来,会比原来还要大,那就不存在完数了。)。例如6就是一个完数,证明为1+2+3=6,除了本身以外的因子之和为这个数。
代码操作:
package Practice;
//练习题:求1000范围内的完数
//完数:如果一个属等于其所有因子之和,我们就称这个数为:
//"完数"
public class 求一定范围内的完数并求和 {
public static void main(String[] args) {
for(int i=1;i<=1000;i++) { //(2)外循环每执行一次,内循环执行完一圈;
int sum=0;
for(int j=1;j<=i/2;j++) {
if(i%j==0) { //(3)在if里筛选出的j为因子,与i本身的除数为0,求和。
sum=sum+j;
}
}
if(sum==i) {
System.out.println("1000范围内的完数有:"+i); //(4) 筛选出的i为完数
}
}
}
}
代码结果:
参考:Java中常见的30道例题(附代码)
——第十题:求在指定范围内的完数并打印输出
非人哉952: 额第一张图虽然;两个都是jdk,其实一个是jdk,一个是jre点进去看安装路径子目录就知道了
CSDN-Ada助手: 不知道 算法 技能树是否可以帮到你:https://edu.csdn.net/skill/algorithm?utm_source=AI_act_algorithm
非人哉952: 第一张图的两个jdk都是jdk。 安装的时候,选择x86或者i85,看你的电脑是什么型号的。 然后安装会默认安装jdk和jre两个,会有两个安装路径的弹窗。
非人哉952: 这里的扩展关系第一次写错了,抱歉。 应该是源头到被指向的,被指向的是基础先执行,的这样一种关系
非人哉952: #include<iostream> #include<string> using namespace std; string Copy(string str1, int m, int n) { string str2; for (int j = m - 1; j < n; j++) { str2.push_back(str1[j]); } cout << str2; return str2; } int main() { int n, m; cin >> n; string str1; cin >> str1; cin >> m; Copy(str1, m, n); return 0; }