码农谷 找出N之内的所有完数
题目描述
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,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之内的所有完数的更多相关文章
- 找出N之内的所有完数
时间限制: 10 Sec 内存限制: 128 MB 提交: 389 解决: 148 [提交][状态][讨论版] 题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". ...
- 代码实现:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如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. ...
- python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)
day12 --------------------------------------------------------------- 实例019:完数 题目 一个数如果恰好等于它的因子之和,这个 ...
- 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
package a; public class Wanshu { public static void main(String[] args) { for (int i = 1; i <= 10 ...
- 【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 ...
- javascript 找出数字数组中最大的数
找出数字数组中最大的数 var Match = (function(){ var arr = null; var len = 0; return { max:function(arr,len){ ar ...
- 从数组中找出所有组合为s的数
java版本 package numCombine; /** * 从数组中找出所有组合为s的数 * @author root * */ public class NumComberAll { publ ...
- 利用快速排序原理找出数组中前n大的数
#include <stdio.h> #include <stdint.h> #include <stdlib.h> #define MAX_SIZE 400001 ...
- 找出数组前N大的数
这个题也是个比较有名的面试题.当然有很多变种. 题目意思基本是:从一个数据量很大的数组里找前N大的元素.不允许排序. 这个题有两个比较好的思路: 思路一:用快速排序的思想,是思想,不是要排序; 思路二 ...
随机推荐
- Ubuntu Command-Line: Enable Unlimited Scrolling in the Terminal
At times when using the terminal, the output from a command can be so long, you simply can’t scroll ...
- hibernate的数据库乱码问题
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration ...
- nginx+gunicorn+supervisor+flask @ centos
/etc/nginx/conf.d/default.conf server { listen 80 default_server; server_name 127.0.0.1; #charset ko ...
- 学习笔记:HSB、HSL
转自知乎:http://www.zhihu.com/question/22077462 HSB 为 色相,饱和度,明度, HSL 为 色相,饱和度,亮度, HSV 为色相,饱和度,明度. HSB 和 ...
- IOS7 SDK 几宗罪
IOS7 app 默认是全屏模式,所以之前的程序窗口会上向移动到状态栏上面,所以在底边会有一条大白边 表格单元格,默认是白色背景,之前程序设置的透明效果,这里不在起作用,需要用下面的委托方法改变.- ...
- sed详细分析
[一.简单描述] sed命令类似命令行的文本编辑器,以行为单位(见注1).除非带命令i(in-place)否则源文件内容并不会被更新. [二.使用] [2.1.使用方式] 存在两种使用方式: 1. ...
- 重新安装配置ubuntu的引导菜单
查看分区挂在情况,找到ubuntu所在分区(boot)$sudo fdisk -l 卸载isodevice镜像设备所在盘分区(boot) $sudo umount -l /isodev ...
- SVD
SVD分解(奇异值分解),本应是本科生就掌握的方法,然而却经常被忽视.实际上,SVD分解不但很直观,而且极其有用.SVD分解提供了一种方法将一个矩阵拆分成简单的,并且有意义的几块.它的几何解释可以看做 ...
- git新建仓库
克隆地址 git clone https://git.oschina.net/dy09/dy_shop.git 在克隆下来的文件夹里面进行下面的操作1.git add -A 2.git commit ...
- maven 几个插件的使用
1. compile <plugin> <artifactId>maven-compiler-plugin</artifactId> <configurat ...