import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
long num = in.nextLong();
long sq = (long)Math.sqrt(num);
for (int i = 2; i <= sq; i++) {
while(num % i == 0) {
System.out.print(i + " ");
num = num / i;
}
}
//最后还要判断一下是否能除到1
System.out.print(num == 1 ? "" : num + "");
in.close();
}
}
题2:合并区间
java复制代码
import java.util.*;
/*
* public class Interval {
* int start;
* int end;
* public Interval(int start, int end) {
* this.start = start;
* this.end = end;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param intervals Interval类ArrayList
* @return Interval类ArrayList
*/
public ArrayList<Interval> merge (ArrayList<Interval> intervals) {
// write code here
if (intervals == null || intervals.size() <= 1) {
return intervals;
}
//处理开始
Collections.sort(intervals, new Comparator<Interval> () {
@Override
public int compare (Interval a, Interval b) {
return Integer.compare(a.start, b.start);
}
});
ArrayList<Interval> result = new ArrayList<Interval>();
//对要处理的list进行处理,如果最终result这个list中是空的或者当前的对象起点大于上一个的终点那么直接填充就行
for (int i = 0; i < intervals.size(); i++) {
Interval current = intervals.get(i);
if (result.isEmpty() || result.get(result.size() - 1).end < current.start) {
result.add(current);
} else {
//否则就将上一个的终点与当前终点比较取最大的值即可
result.get(result.size() - 1).end = Math.max(result.get(result.size() - 1).end, current.end);
}
}
return result;
}
}
题3:大数加法
难点主要是数值太大会超过Long型数据,所以使用BigInteger数据类型来解决就行
java复制代码
import java.util.*;
import java.math.*;
public class Solution {
/**
*代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
BigInteger a = new BigInteger(s);
BigInteger b = new BigInteger(t);
return a.add(b).toString();
}
}