HDOJ(HDU)1406完数
2798 ワード
Problem Description完数の定義:1より大きい正の整数のすべての因子の和がそれ自体に等しい場合、この数は完数であり、例えば6,28は完数である:6=1+2+3;28=1+2+4+7+14.
本題のタスクは,2つの正の整数間の完数の個数を判断することである.
Input入力データは複数の行を含み、最初の行は正の整数nであり、テストインスタンスの数を表し、次いでnのテストインスタンスであり、各インスタンスは1行を占め、2つの正の整数num 1とnum 2からなる(1
本題のタスクは,2つの正の整数間の完数の個数を判断することである.
Input入力データは複数の行を含み、最初の行は正の整数nであり、テストインスタンスの数を表し、次いでnのテストインスタンスであり、各インスタンスは1行を占め、2つの正の整数num 1とnum 2からなる(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;
}
}