本文主要是介绍PAT-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 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); }}
}
这篇关于PAT-L1-006. 连续因子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!