PAT-L1-006. 连续因子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011987219/article/details/77322609

一个正整数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 sc = new Scanner(System.in);
		int inputNum= sc.nextInt();
		int midNum = (int)Math.floor(Math.sqrt(inputNum))+1;
		int maxCount=0;
		int xStart=0;
		int xEnd=0;
		for (int i=2;i<midNum;i++){
			int k=i;
			int maxTemp=0;
			int inputNumTemp=inputNum;
			while(inputNumTemp % k == 0){
				maxTemp++;
				if(maxTemp>maxCount){
					maxCount=maxTemp;
					xStart=i;
					xEnd=k;
				}
				inputNumTemp=inputNumTemp/k;
				k++;
			}
		}
		if(maxCount == 1){
			System.out.println(maxCount);
			System.out.println(xStart);
		}
		else if(maxCount == 0){
			System.out.println("1");
			System.out.println(inputNum);
		}
		else{
			System.out.println(maxCount);
			for(int i=xStart; i< xEnd;i++){
				System.out.print(i+"*");		
			}
			System.out.print(xEnd);	
		}
	
	}
}


猜你喜欢

转载自blog.csdn.net/u011987219/article/details/77322609
今日推荐