Problem Description
完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。
本题的任务是判断两个正整数之间完数的个数。
Input
输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t-->0){
int a = sc.nextInt();
int b = sc.nextInt();
if(a>b){
a=a^b;
b=a^b;
a=a^b;
}
int num = numm(a,b);
System.out.println(num);
}
}
private static int numm(int a, int b) {
int num =0;
for(int i=a;i<=b;i++){
if(is(i)){
num++;
}
}
return num;
}
private static boolean is(int a) {
int num=1;
for(int i=2;i*i<=a;i++){
if(a%i==0){
num=num+i;
num=num+a/i;
}
}
if(a==num){
//System.out.println(a);
return true;
}
return false;
}
}
时间: 2024-10-23 16:31:13