1、编写一个程序:判断一个数是否为质数
(质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。)
常规方法:
public class Test{
public static void main(String[] args) {
System.out.println("请输入一个数");
Scanner input=new Scanner(System.in);
int number= input.nextInt();
System.out.println(isPrime(number));
}
public static boolean isPrime(int number){
for(int i=2;i<number;i++){
if(number%i==0){
return false;
}
}
return true;
}
}
缺点:逐个循环,效率过低
改进思路:
根据此图得出结论:一个整数的一对因子,一定有一个小于等于平方根,有一个大于等于平方根
所以只需判断平方根(包含平方根)之前的数是否取模为0即可,提高效率。
改进后:
public class Test{
public static void main(String[] args) {
System.out.println("请输入一个数");
Scanner input=new Scanner(System.in);
int number= input.nextInt();
System.out.println(isPrime(number));
}
public static boolean isPrime(int number){
for(int i=2;i<=Math.sqrt(number);i++){
if(number%i==0){
return false;
}
}
return true;
}
}
2、编写一个程序:统计一共有多少个水仙花数
自幂数:一个n位自然数等于自身各个数位上数字的n次幂之和
例如:三位数:1^3+5^3+3^3=153
public class Test{
public static void main(String[] args) {
int count=0;
for(int i=100;i<=999;i++){
//个位
int ge=i%10;
//十位
int shi=i/10%10;
//百位
int bai=i/100%10;
//注意sum的类型要为double,因为pow方法的返回值为double
double sum=Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);
if(sum==i){
count++;
}
}
System.out.println("一共有"+count+"个水仙花数");
}
}
思考扩展:为什么没有两位的自幂数
统计一共有几个四叶玫瑰数