循环-23. 找完数(20)
来源:互联网 发布:Centos mysqldb安装 编辑:程序博客网 时间:2024/05/22 17:38
题目来源:
参考:http://blog.csdn.net/rabbit8848/article/details/38552991
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(0<m<=n<=10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。
输入样例:
1 30
输出样例:
1 = 16 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14
超时解:
import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //整数 m,n 0<m<=n<=10000 int m = scanner.nextInt(); int n = scanner.nextInt(); int sum=0; for(;m<=n;++m) { ArrayList<Integer> result = new ArrayList<Integer>(); sum =m; if(m==1) System.out.println("1 = 1"); else { for(int i=1;i<=m/2 ;i++) { if(m%i==0) { sum = sum-i; result.add(i); } } if(sum==0) { System.out.print(m); System.out.print(" ="); for(int i=0;i<result.size();i++) { System.out.print(" "+result.get(i)); if(i<result.size()-1) { System.out.print(" +"); } } System.out.println(""); } result = null; } } } }
正确解:
import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Scanner;public class Main {public static void main(String[] args){Scanner scanner = new Scanner(System.in);//整数 m,n 0<m<=n<=10000int m = scanner.nextInt();int n = scanner.nextInt();int sum=0;for(;m<=n;++m){ArrayList<Integer> result = new ArrayList<Integer>();sum =1;if(m==1)System.out.println("1 = 1");else{//先求因子和for(int j=2;j<=Math.sqrt(m);j++){if(m%j==0){sum = sum+j;int temp = m/j;if(temp >j && temp<m){sum= sum+temp;}}}//如果因子和等于 m,是完数if(sum!=m){continue;}//找因子for(int i=1;i<=m/2 ;i++){if(m%i==0){result.add(i);}}System.out.print(m);System.out.print(" =");for(int i=0;i<result.size();i++){System.out.print(" "+result.get(i));if(i<result.size()-1){System.out.print(" +");}}System.out.println("");result = null;}}}}
参考:http://blog.csdn.net/rabbit8848/article/details/38552991
0 0
- 循环-23. 找完数(20)
- 循环-23. 找完数(20)
- 循环-23. 找完数(20)
- 循环-23. 找完数(20)
- 循环-23. 找完数(20)
- 循环-23. 找完数(20)
- 循环-23. 找完数(20)
- PAT_B_循环-23. 找完数(20)
- 循环
- 循环
- 循环
- 循环
- 循环
- 循环
- 循环
- 循环
- 循环
- 循环
- LeetCode_Median of Two Sorted Arrays
- 百度地图api基本用法和一些demo[根据地址查询经纬度,并进行动态标注BMap.Marker地点]
- MFC中的函数调用约定,extern C, __declspec(dllexport)
- Linux touch命令
- hello, openwrt
- 循环-23. 找完数(20)
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- Cpp的存储级别Storage Classes-笔记
- tomcat 配置内存大小
- oracle %rowtype用法
- Fedora21安装Android Studio
- Visual Studio 常用快捷键 (二)
- 解决putty终端中文乱码
- 欢迎使用CSDN-markdown编辑器