一、编写一个程序,找出1000以内的所有完数。所谓完数是指一个数恰好等于它的因子之和(不包括它本身)。
public class WanShu {
public static void main(String[] args) {
for (int i=2;i<1000;i++){
if (isWanShu(i)) {
System.out.println(i+"是一个完数\n");
}
}
}
public static boolean isWanShu(int num){
int sum=1;
for (int i=2;i*i<=num;i++){
if(num%i==0){
sum+=i;
if (i * i != num) {
sum += num / i;//避免平方根因子重复累加
}
}
}
return sum==num;
}
}
- 主方法
main
中使用 for 循环遍历从 2 到 999 的每个数。 - 对于每个数,调用
isWanShu
方法来判断是否为完数。 isWanShu
方法会计算给定数num
的因子之和,然后将这个和与原数比较,若相等则返回 true 表示是完数,否则返回 false。- 若某个数是完数,则在主方法中打印输出该数是一个完数。
二、编写一个Java方法,接受一个整数数组作为参数,返回一个新数组,其中的元素是原数组中偶数的平方。
import java.util.Scanner;
//编写一个Java方法,接受一个整数数组作为参数,返回一个新数组,其中的元素是原数组中偶数的平方
public class practice1002 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入数组的长度:");
int length=scanner.nextInt();
int [] list=new int [length];
for(int i=0;i<length;i++){
System.out.println("输入数组中的整数:");
list[i]=scanner.nextInt();
}
int []endList=Array(list);//调用Array方法
System.out.println("原数组偶数的平方构成的新数组:");
for(int i=0;i<length;i++){
System.out.print(endList[i]+" ");
}
}
public static int []Array(int [] list){
int index=0;
int count=0;
for(int i=0;i<list.length;i++){
if(list[i]%2==0){
count++;
}
}
int[] end=new int[count];
for(int i=0;i<list.length;i++){
if(list[i]%2==0){
end[index]=list[i]*list[i];
index++;
}
}
return end;
}
}
- 主方法
main
中首先创建一个 Scanner 对象来接收用户输入。 - 用户被要求输入数组的长度,并根据输入长度创建一个整型数组
list
。 - 使用 for 循环,用户逐个输入数组中的整数,将这些整数存储在数组
list
中。 - 调用 Array 方法,传入
list
数组作为参数,该方法会返回一个新的数组,其中存储了原数组中偶数的平方。 - 将返回的新数组赋值给
endList
,然后使用 for 循环打印输出新数组中的每个元素,即原数组中偶数的平方。