- package test;
- /*
- * 设计一个程序是求9999以内的“自身数”,并打印出其所有约数。所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身。
- 如28=1+2+4+7+14就是一个完全数。要求:打印需满足以下格式。
- A:约数1 约数2 约数3...... 例如 6: 1 2 3
- B:约数1 约数2 约数3...... 28: 1 2 4 7 14
- C:约数1 约数2 约数3...... 496: 1 2 4 8 16 31 62 124 248
- * */
- public class JavaTest {
- /**
- * 思路:1,求自身数 这个数必须是2的倍数
- * 2,自身数要等于自己的约数和 那么将这个数除以2 将除以得到的数相加如果等于这个数 那么这个数就自身数
- * 3,得到自身数后用一个for循环来打印它的约数 约数即是这个数除以2得到的数 前提是这个数能整除2
- * 4,1也是一个自身数 1的约数是1
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- System.out.println("10以内的自身数和它的约数为:");
- getMyNumber();
-
-
- }
- //获取9999以内的自身数以及它的约数
- public static void getMyNumber(){
- System.out.println(1+":"+1);
- for(int x=2;x<=9999;x++){
- int sum =0;
- for(int y=2;y<=x;y++){
- if(x%y==0){
- sum += x/y;
- }
- }
- if(sum==x){
- System.out.print(x+":");
- for(int i=2;i<=x;i++){
- if(x%i==0)
- System.out.print(x/i+" ");
- }
- System.out.println("");
- }
-
- }
- }
- }
复制代码 |