题目描述

一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子。

输入描述

N

输出描述

? its factors are ? ? ?

样例

输入:


输出:

6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248 

======================================================第一次code:
 import java.util.*;

 public class HelloWorld
  {
      public static void main(String[] args)
      {
          Scanner input = new Scanner(System.in);
          int n = input.nextInt();
          start(run(n));
      }    /**    *  求n以内的所有数的因数    *  每个数的所有因数以逗号为分隔,存到一个字符串数组    *  将所有数的因数集存到一个字符串中    */
      public static String[] run(int n)
      {
          String a="",c="";
          String [] b = new String[n+1];
          for(int i=1;i<n+1;i++)
          {
              for(int j=1;j<i;j++)
              {
                  if(i % j ==0)
                  {
                      a=String.valueOf(j)+",";
                      c +=a;
                  }
              }
              b[i] = c;
              c="";
          }
          return b;
      }     /**     *  将字符串以逗号为分界,切割成数组     *  对数组和数组的下标进行比较     *  如果匹配成功,则输出结果     */
      public static void start(String[] b)
      {
          for(int i=2;i<b.length;i++)
          {
              String[]c=b[i].split(",");
              int x = 0;
              String o,w="";
              int [][] a = new int[b.length][c.length];
              for(int k=0;k<c.length;k++)
              {
                  a[i-2][k]=Integer.parseInt(c[k]);
                  x += a[i-2][k];
              }
              if(x==i)
              {
                  for(int k=0;k<c.length;k++)
                  {
                      o = String.valueOf(a[i-2][k]);
                      w +=(" "+o);
                  }
                  System.out.println(i+" its factors are"+w);
              }
          }
      }
  }

测试结果显示,求1000的完数,耗费时间为76毫秒;求2000以内的完数,所耗时间为251毫秒;求10000以内的完数,所耗时间为6195毫秒。

时间效率不高,必须得提高。


码农谷 找出N之内的所有完数的更多相关文章

  1. 找出N之内的所有完数

    时间限制: 10 Sec  内存限制: 128 MB 提交: 389  解决: 148 [提交][状态][讨论版] 题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". ...

  2. 代码实现:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.第二个完全数是28, //它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加, //编程找出1000以内的所有完数。

    import java.util.ArrayList; import java.util.List; //一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3. ...

  3. python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)

    day12 --------------------------------------------------------------- 实例019:完数 题目 一个数如果恰好等于它的因子之和,这个 ...

  4. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程     找出1000以内的所有完数。

    package a; public class Wanshu { public static void main(String[] args) { for (int i = 1; i <= 10 ...

  5. 【Python3练习题 014】 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。

    a.b只要数字a能被数字b整除,不论b是不是质数,都算是a的因子.比如:8的质因子是 2, 2, 2,但8的因子就包括 1,2,4. import math   for i in range(2, 1 ...

  6. javascript 找出数字数组中最大的数

    找出数字数组中最大的数 var Match = (function(){ var arr = null; var len = 0; return { max:function(arr,len){ ar ...

  7. 从数组中找出所有组合为s的数

    java版本 package numCombine; /** * 从数组中找出所有组合为s的数 * @author root * */ public class NumComberAll { publ ...

  8. 利用快速排序原理找出数组中前n大的数

    #include <stdio.h> #include <stdint.h> #include <stdlib.h> #define MAX_SIZE 400001 ...

  9. 找出数组前N大的数

    这个题也是个比较有名的面试题.当然有很多变种. 题目意思基本是:从一个数据量很大的数组里找前N大的元素.不允许排序. 这个题有两个比较好的思路: 思路一:用快速排序的思想,是思想,不是要排序; 思路二 ...

随机推荐

  1. Mac上常用的一些命令

    FTP:先cd到要传的文件的文件夹>ftp 10.214.111.1cd到上传的ftp文件put 文件名 虚拟环境cd myproject. venv/bin/activate 激活sudo p ...

  2. PKU 1002解题总结

    闲来无事,研究了一下PKU1002的题目,大意就是把含有字母的电话号码,转换为数字,然后再计算每个电话号码出现的次数,输出.本来蛮简单的一道题,结果折腾了好久,主要也是自己的水平太菜了,先是直接用字符 ...

  3. MySQL日期 字符串 时间戳互转

    平时比较常用的时间.字符串.时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法:本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串.date转时间戳.字符串转dat ...

  4. [Java Basics2] Iterable, Socket, Reflection, Proxy, Factory DP

    Parent interface of Collection: Iterable Interface A class that implements the Iterable can be used ...

  5. OD调试篇9

    渐渐地要用比较高明一点的方法去破解软件了 那好,看看今天的程序先 先载入 测试下程序 发现这是一个未注册版本的程序,注册也不让注册,注册就跳出You have rntered an invalid   ...

  6. 更新新网卡驱动,修复win7雷凌网卡Ralink RT3290在电脑睡眠时和启动网卡时出现蓝屏netr28x.sys驱动文件错误

    更新新网卡驱动,修复win7雷凌网卡Ralink RT3290在电脑睡眠时和启动网卡时出现蓝屏netr28x.sys驱动文件错误 我的本本是win7,雷凌网卡Ralink RT3290   802.1 ...

  7. IPC-管道

    内容提要: 管道简介 使用无名管道实现一个简单的本地文件服务器 使用标准I/O函数库提供的管道实现 使用popen实现本地文件服务器 有名管道-FIFO 使用FIFO改写本地文件服务器 管道和FIFO ...

  8. linux之"server" directive is not allowed here in

    配置完rewrite之后重启nginx发现如下错误 "server" directive is not allowed here in* 原因是因为 外部配置的simple.con ...

  9. 【ZJOI2004】嗅探器

    练tarjian不错的题,连WA几次后终于会记住tarjian的模板了 原题: 某军搞信息对抗实战演习.红军成功地侵入了蓝军的内部网络.蓝军共有两个信息中心.红军计划在某台中间服务器上安装一个嗅探器, ...

  10. 编译llvm+clang

    第一步,下载llvm代码: git clone git@github.com:llvm-mirror/llvm.git 第二步,进入llvm/tools目录并下载clang代码 cd llvm/too ...