`

完美数

阅读更多
  如果一个数能够被组成它的各个非0数字整除,则称它是完美数。
  例如:1-9都是完美数,10,11,12都是完美数,但是13就不是完美数
  (因为13不能被组成它的数字“1”和“3”整除)。 现在给定正整数x,y,
  求x和y之间(包含x和y)一共有多少个完美数。输入数据1<=x<=y<=2000000000。
  例如: x = 1, y = 13,输出12; x = 13,y = 13,输出0; x = 100,y = 1000,输出106。

/**
 * <一句话功能简述>
 * <如果一个数能够被组成它的各个非0数字整除,则称它是完美数。
 * 例如:1-9都是完美数,10,11,12都是完美数,但是13就不是完美数
 * (因为13不能被组成它的数字“1”和“3”整除)。 现在给定正整数x,y,
 * 求x和y之间(包含x和y)一共有多少个完美数。输入数据1<=x<=y<=2000000000。
 *  例如: x = 1, y = 13,输出12; x = 13,y = 13,输出0; x = 100,y = 1000,输出106。 >
 * @author  zyy
 * @version  [版本号, 2014-1-16]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class Test
{
    //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 
    public static void main(String args[]) 
    {     
        System.out.println(calculate(100, 1000));
    } 
    //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
    
    /**
     * 算法
     */
    public static int calculate(int x, int y)
    {
        // 最终是完美数的个数
        int count = 0;
        
        // 输入的数字
        int[] num = new int[y - x + 1]; 
        
        // 数组下标
        int index = 0;
        
        // 存入数组
        for(int i = x; i <= y; i++)
        {
            num[index] = i;
            index++;
        }
        
        // 当前计算的数字的长度
        int currLength = 0;
        
        // 当前计算的数字的每一个数字
        int currIndexNumber = 0;
        
        // 遍历每个数字,判断是否为完美数
        for(int j : num)
        {
            String currNumber = Integer.valueOf(j).toString();
            
            currLength = currNumber.length();
            
            boolean flag = true;
            for(int i = 0; i < currLength; i++)
            {
                // 取每一个数字
                currIndexNumber = Integer.parseInt(currNumber.substring(i, i + 1));
                
                // 判断是否整除,如果不能被整除,设置为false
                if (currIndexNumber != 0 && Integer.parseInt(currNumber) % currIndexNumber != 0)
                {
                    flag = false;
                    break;
                }
            }
            
            if (flag)
            {
                count++;
            }
        }
        return count;
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics