(一)题目描述:
输入一个日期,判断日期是当年的第几天
分析:
首先确定一下几点:
- 年份有平年有闰年,闰年的计算方式:
(是 400 的倍数)||(能被 4 整除 && 不能被 100 整除)
。 - 闰年与平年的差别在于 2 月份:
闰年 29 天,平年 28 天
。
知道以上两点后,只需要累加和就可以求出是该年的第几天了。
代码:
public static void main(String args[]) throws IOException {
int days[] = {31,29,31,30,31,30,31,31,30,31,30,31}; // 闰年
int days2[] = {31,28,31,30,31,30,31,31,30,31,30,31}; // 平年
// 从控制台中读取数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String date[];
while (true){
int sum = 0;
// 切割接收的字符串并存入数组
date = br.readLine().trim().split(" +");
if((Integer.parseInt(date[0]) % 400 == 0) || ((Integer.parseInt(date[0]) % 4 == 0) && (Integer.parseInt(date[0]) % 100 != 0))){
for (int i = 0; i < Integer.parseInt(date[1]) - 1; i++){
System.out.println("日期:" + days[i]);
sum += days[i];
}
sum += Integer.parseInt(date[2]);
}else{
for (int i = 0; i < Integer.parseInt(date[1]) - 1; i++){
System.out.println("日期:" + days2[i]);
sum += days2[i];
}
sum += Integer.parseInt(date[2]);
}
System.out.println(sum);
}
}
结果展示:
(二)题目描述:
判断给定区间内的回文素数的个数
分析:
判断回文素数需要知道一下几点:
- 回文数是指:给定一个整数,它倒读还等于它本身的数。例如:121、1331、25352……
- 素数(质数)是指:给定一个大于 1 (1和0不是素数)的素数,除了 1 和它本身,不能被其他自然数整除的数。
代码:
// 判断是否为素数
public static boolean isPrime(int num){
if( num <= 3){
return num > 1;
}
int sqrt = (int) Math.sqrt(num);
for (int i = 2; i <= sqrt; i++){
if(num % i == 0){
return false;
}
}
return true;
}
// 判断是否为回文数
public static boolean isPalindrome(int num){
String str = String.valueOf(num);
final StringBuilder sb = new StringBuilder(str);
if (sb.reverse().toString().equals(str)){
return true;
}
return false;
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int min = sc.nextInt();
int max = sc.nextInt();
int count = 0;
for (int i = min; i <=max; i++){
// 可以将这一句解开注释,具体看一下范围内的数的情况
// System.out.println(isPrime(i) + " " + isPalindrome(i) + " " + i);
if(isPrime(i) && isPalindrome(i)){
count++;
}
}
System.out.println("给定范围内的回文素数有:" + count + "个");
}