4.一个数如果恰好等于它的因子之和,这个数就称为完数。编写应用程序求1000之内的所有完数。
我们要先弄清楚完数的定义:
如果一个数恰好等于它的因子之和,则称该数为“完全数” [2] 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。(来自百度百科)
package example;
public class third {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 2,j = 1,sum = 0;
System.out.println("10000以内的完数有:");
for(i = 2; i <= 10000; i++) {
for(j = 1; j < i; j++) {
if(i%j == 0)//判断j是否为i的因子
sum = sum+j;
}
if(sum == i)
System.out.println(" " + sum);
sum = 0;
}
}
}
5.编写应用程序,使用for循环语句计算8+88+888+…前10项之和。
package example;
public class third {
public static void main(String[] args) {
// TODO Auto-generated method stub
long sum = 0,a = 8,item = a,n = 10,i = 1;
for(i=1;i<=n;i++) {
sum = sum+item;
item = item*10+a;
}
System.out.println(sum);
}
}
运行结果:
6.编写应用程序,输出满足1+2+3+…+n<8888的最大正整数n。(答案为134)
package example;
public class third {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 0;
double sum = 0.0;
while(sum<8888) {
sum = sum+n;
n++;
}
System.out.println("1+2+3+...+n<8888的最大正整数为"+n);
}
}