题目解析
输出给定数字的连续 最长因子 且 是最小的连续因子
解题思路
直接暴力枚举 他的连续因子 (注: 可能会是一个极大的素数哦!)
代码
import java.io.*;
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
int n = sc.nextInt();
int start = 0; // 起始位置
int maxlen = 0; // 最长长度
// 枚举这个数的因子
for (int i = 2; i <= n / i; i++) // 防止巨大的素数 卡时间
{
int len = 0; // 连续因子的长度
int mul = 1; // 连续因子的乘积
for (int j = i;; j++) // 往后枚举
{
mul *= j;
if (n % mul != 0) // 不合法 退出
break;
len++;
}
if (maxlen < len) // 当前连续因子个数 大于 当前找到的最大连续因子个数 就替换
{
maxlen = len;
start = i;
}
}
// 这个数是素数 也就是没在
if (maxlen == 0)
{
out.println(1);
out.println(n);
} else
{
// 输出个数
out.println(maxlen);
// 输出连续因子
for (int i = 1; i <= maxlen; i++)
{
if (i != 1)
out.print("*");
out.print(start + i - 1);
}
}
out.flush();
out.close();
}
static Scanner sc = new Scanner(System.in);
static PrintWriter out = new PrintWriter(System.out);
}