1. 查找组成一个偶数最接近的两个素数
题目描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
输入描述:
输入一个偶数
输出描述:
输出两个素数
示例1
输入
20
输出
7 13
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int num=sc.nextInt();
int n=num/2;
int min=n;
int max=n;
for(int i=0;i<n;i++){
if(Judge(min)&&Judge(max)&&(min+max==num)){
System.out.println(min);
System.out.println(max);
break;
}
min-=1;
max+=1;
}
}
}
//判断素数
public static boolean Judge(int number){
int count=0;
for(int i=2;i<number;i++){
if(number%i==0)
count++;
}
if(count!=0)
return false;
else
return true;
}
}
2.自守数
题目描述
自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数
接口说明
/*
功能: 求出n以内的自守数的个数
输入参数:
int n
返回值:
n以内自守数的数量。
*/
public static int CalcAutomorphicNumbers( int n)
{
/*在这里实现功能*/
return 0;
}
输入描述:
int型整数
输出描述:
n以内自守数的数量。
示例1
输入
2000
输出
8
方法1:转成字符串,截取最后几位来操作
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
System.out.println(CalcAutomorphicNumbers(n));
}
}
public static int CalcAutomorphicNumbers(int n){
int count=0;
for(int i=0;i<n;i++){
int sum=(int)Math.pow(i,2);
String s=String.valueOf(sum);
String s2=String.valueOf(i);
String s1=s.substring(s2.length(),s.length());
if(s1.equals(s2)){
count++;
}
}
return count;
}
}
方法2:直接用数字来操作
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int n = scanner.nextInt();
int count =0;
for (int i = 0; i <=n; i++) {
if (CalcAutomorphicNumbers(i)) {
count++;
}
}
System.out.println(count);
}
}
//两数一直取余,分别比较两数最后一位的大小
public static boolean CalcAutomorphicNumbers(int n){
int num1 = (int) Math.pow(n, 2);
while(n>0){
int a = n%10;
int b = num1%10;
n/=10;
num1/=10;
if(a!=b){
return false;
}
}
return true;
}
}