L1-006. 连续因子
2018-03-24 14:43
155 查看
L1-006. 连续因子 一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。 输入格式: 输入在一行中给出一个正整数N(1<N<231)。 输出格式: 首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内。 输入样例: 630 输出样例: 3 5*6*7
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); scanner.close(); if (num <= 1 || num >=Math.pow(2, 31)) { return; } int count = (int) (Math.sqrt(num) + 1); int[] a = new int[count]; int j = 0; for (int i = 2; i < num; i++) { if (num%i == 0) { a[j++] = i; } } int[] b = new int[j]; for (int i = 0; i < b.length; i++) { b[i] = 0; } for (int i = 1; i < j; i++) { if (a[i]-a[i-1] == 1) { b[i] += 1+b[i-1]; } } int max = -1; int point = 0; for (int i = 0; i < b.length; i++) { if (b[i] > max) { max = b[i]; point = i; } } System.out.println(max+1); for(int i = point-max; i < point; i++) { System.out.print(a[i] + "*"); } System.out.print(a[point]); } }
相关文章推荐
- pat L1-006. 连续因子
- (PAT)L1-006 . 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- PAT-天梯赛练习集-L1-006-连续因子
- PAT L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006.连续因子
- PAT-L1-006. 连续因子
- L1-006. 连续因子
- 团体程序设计天梯赛-练习集 L1-006. 连续因子 JAVA
- L1-006. 连续因子(枚举因子)
- PAT练习集之20分题-L1-006. 连续因子
- C++ L1-006. 连续因子
- PAT L1-006 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- PAT L1-006 连续因子