题目详情:
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝特别喜欢 22,今年是公元 2020 年,他特别高兴,因为每天日历上都可以看到 22。
如果日历中只显示年月日,请问从公元1900 年 1 月 1 日到公元9999 年 12 月 31 日,一共有多少天日历上包含 2。即有多少天中年月日的数位中包含数字 2。
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个正整数只有 1 和它本身两个约数,则称为一个质数(又称素数)。
前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。
如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3,5,7,23,37 都是纯质数,而 11,13,17,19,29,31 不是纯质数。当然 1,4,35 也不是纯质数。
请问,在 1 到 20210605 中,有多少个纯质数?
解题思路:
第一题,我们可以利用java自带的localdate去写,将年月日转换成字符串去用contain判断,之后相加,注意最后一天也要加上。
第二题需要再写一个方法去判断质数,之后通过while语句将每个数字去进入方法去判断,如果都是质数那就是纯质数,让计数值加一即可
代码实现:
import java.time.LocalDate;
public class d1324 {
public static void main(String[] args) {
LocalDate start = LocalDate.of(1900,1,1);
LocalDate end = LocalDate.of(9999,12,31);
int count = 0;
while(!start.equals(end)){
String year = start.getYear()+"";
String month = start.getMonthValue()+"";
String day = start.getDayOfMonth()+"";
if(year.contains("2")||month.contains("2")||day.contains("2")){
count++;
}
start = start.plusDays(1);
}
System.out.println(count+1);
}
}
public class d1325 {
public static void main(String[] args) {
int sum=0;
for(int i=1;i<=20210605;i++){
int j=i;
while(j!=0){//筛选条件 取出每位上的数看是否为质数
if(Is(j%10)==false) {
break;
}
j=j/10;
}//判断是否为质数 j==0 是防止break中跳出的数
if(j==0&&Is(i)) {
sum++;
}
}
System.out.println(sum);
}
public static boolean Is(int num) {
if(num==1||num==0){
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if(num%i==0){
return false;
}
}
return true;
}
}
答案:
如上