import javautilHashSet;
import javautilSet;
public class Main {
public static void main(String[] args) {
for (int i = 2; i < 500; i++) {
check(i);
}
}
private static void check(int i) {
Set<Integer> set = new HashSet<Integer>();
setadd(1);
for (int j = 2, l = (int) Mathsqrt(i); j <= l; j++) {
if (i % j == 0) {
setadd(j);
setadd(i / j);
}
}
int sum = 0;
for (int j : set) {
sum += j;
}
if (sum == i) {
Systemoutprint(i + ": ");
for (int j : set) {
Systemoutprint(j + " ");
}
Systemoutprintln();
}
}
}
求采纳
public static void main(String[] args) {
Systemoutprintln("1000以内的完数有:");
for (int i = 2; i <= 1000; i++) {
if(i == getWs(i)){
Systemoutprintln(i);
}
}
}
public static int getWs(int a) {
int sum = 1;
int sqrt = (int) Mathsqrt(a);
for (int i = 2; i <= sqrt; i++) {
if (a % i == 0) {
sum += i;
sum += a / i;
// Systemoutprintf("%d,%d,", i, a / i);
}
}
if (a == sqrt sqrt) {
sum -= sqrt;
}
return sum;
}
你的程序我帮你改完了,改动的地方见注释。
完整的程序如下:
public class A {public static void main(String[] args) {
for (int i = 2; i <= 6; i++) {//这里把i<6改成i<=6 因为6是完数
int s=0; //这里移动到for-i循环中
int j=1; //这里移动到for-i循环中
while(j<i){
if(i%j==0){
s=s+j;
}
j++;//这里移动到while-j循环外
}
if(s==i){
Systemoutprint(i+" ");
}
}
}
}
运行结果:
6
你好,按照你的要求代码如下,可以直接运行,给出了运行结果
import javautilHashSet;
import javautilSet;
public class Main {
public static void main(String[] args) {
for (int i = 2; i < 1000; i++) {
check(i);
}
}
private static void check(int i) {
Set<Integer> set = new HashSet<Integer>();
setadd(1);
for (int j = 2, l = (int) Mathsqrt(i); j <= l; j++) {
if (i % j == 0) {
setadd(j);
setadd(i / j);
}
}
int sum = 0;
for (int j : set) {
sum += j;
}
if (sum == i) {
Systemoutprint(i + ": ");
for (int j : set) {
Systemoutprint(j + " ");
}
Systemoutprintln();
}
}
}
运行结果:
6: 1 2 3
28: 1 2 4 7 14
496: 16 1 2 4 248 8 124 62 31
以上就是关于用java编写输出2到500之间的所有完数全部的内容,包括:用java编写输出2到500之间的所有完数、java菜鸟求教完数的求法、java求完数代码(某自然数除它本身以外的所有因子之和等于该数,则该数被称为完数。)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)