/** * 【题目名称】完美数<p> * 【题目来源】https://leetcode.cn/problems/perfect-number/description/ * * @author 潘磊,just_panlei@just.edu.cn * @version 1.0 */classSolution{/** * 判断指定正整数是否为完美数。 * * @param num 指定正整数。 * @return true当且仅当num是完美数,否则false。 */publicbooleancheckPerfectNumber(intnum){if(num==1){// 1不是完美数returnfalse;}intsumOfAllFactors=1;// num除自身以外所有正因子之和,初始为1/* 从数字2依次遍历到num/2 */for(inti=2;i<=num/2;i++){if(num%i==0){// 如果当前整数是num的正因子sumOfAllFactors+=i;// 将当前整数累加到sumOfAllFactors上}}returnsumOfAllFactors==num;// 返回num是否符合完美数的要求}}/** * 【题目名称】完美数<p> * 【题目来源】https://leetcode.cn/problems/perfect-number/description/ * * @author 潘磊,just_panlei@just.edu.cn * @version 1.1 */classSolution{/** * 判断指定正整数是否为完美数。 * * @param num 指定正整数。 * @return true当且仅当num是完美数,否则false。 */publicbooleancheckPerfectNumber(intnum){if(num==1){// 1不是完美数returnfalse;}intsumOfAllFactors=1;// num除自身以外所有正因子之和,初始为1inti;/* 从数字2依次遍历到sqrt(num)-1 */for(i=2;i*i<num;i++){if(num%i==0){// 如果当前整数是num的正因子sumOfAllFactors=sumOfAllFactors+i+num/i;// 将当前整数以及当前整数对应的正因子累加到sumOfAllFactors上}}if(i*i==num){// 如果sqrt(num)也是num的正因子sumOfAllFactors+=i;// 将sqrt(num)累加到sumOfAllFactors上}returnsumOfAllFactors==num;// 返回num是否符合完美数的要求}}