您的位置:首页 > 其它

HDOJ(HDU) 1406 完数

2016-04-13 11:10 260 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: