1、三角回文数
根据条件往后循环,判断回文即可
public class 三角回文数 {
public static void main(String[] args) {
for(int i = 363;;i++){
long n = i*(i+1)/2;
if(n>20220514&&isres(n)) {
System.out.println(n);
break;
}
}
}
public static boolean isres(long hnum ) {
String str = String.valueOf(hnum);
char[]s = str.toCharArray();
for(int i=0;i<s.length/2;i++) {
if(s[i]!=s[s.length-i-1]) {
return false;
}
}
return true;
}
}
2、数数
问题描述
任何一个大于 1 的正整数都能被分解为若干个质数相乘, 比如 28=2×2×7被分解为了三个质数相乘。请问在区间 [2333333, 23333333] 中有多少个正整数 可以被分解为 12 个质数相乘?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
import java.util.*;
public class 数数{
static int count;
public static void main(String[]args) {
int nums = 0;
int st = 2333333,ed = 23333333;
//欧拉筛
int []isPrime = new int[ed+1];
int[]Prime = new int[ed];
for(int i = 2;i<=ed;i++) {
if(isPrime[i]==0) {//第一个质数2要进去,进去以后随着循环所有的质数都会被标记为1
isPrime[i]=1;//将每一个质因子赋初值1
Prime[count++] = i;
}
if(i>=st&&isPrime[i]==12) {//满足条件的合数
nums++;
}
for(int j =0;j<count;j++) {
if(i*Prime[j]>ed) {
break;
}
isPrime[i*Prime[j]]=isPrime[i]+1;//每一个合数可以被多少个质数相乘
if(i%Prime[j]==0) {//避免重复筛
break;
}
}
}
System.out.println(nums);
}
}