开发者

Basic求10000以内的完美数

开发者 https://www.devze.com 2022-11-30 14:17 出处:网络 作者: hebedich
一个数的所有真因数加起来正好等于这个自然数本身,在数学上,具有这种性质的自然数叫做完全数。关键是求出该自然数k的所有因子。如果k%i为0,则i为k的因子,用循环语句求出k 的所有真因子(1<=i<=k/2),把它们求和,看是否等于k来判断。

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

Dim a as Integer,b as Integer,c as Integer
For a = 1 To 10000
c = 0
For b = 1 To a \ 2
If a Mod b = 0 Then c = c + b
Next bwww.devze.com
If a = c 开发者_Python教程Then Print Str(a)
Next a

另附上java版的代码

import java.util.ArrayList; 
public class T013 { 
  public static void mai编程客栈n(String[] args){ 
    ArrayList http://www.devze.comp = new ArrayList(); // 保存每组的分解因子 
    int count = 0; // 计数(完数的总个数) 
    int sum;  // sum = (每个因子之和) 
    for(int i=2;i<10000;i++){  // 测试每个数 i 
      sum = 0; 
      fowww.devze.comr(int j=1;j<i/2+1;j++){ 
        if(i%j==0){  
          p.add(j);  // 保存 i 的每个因子 
          sum += j;  // 保存sum(i的所有因子相加之和) 
        } 
      } 
      if(sum==i){   // 如果当前 i 是完数,则输出(i=所有因子之和) 
        count++; 
        System.out.printf(编程客栈"%4d"+" 是完数,因子是"+i+"=",i); 
        for(int k=0;k<p.size()-1;k++){ 
          System.out.print(p.get(k)+"+"); 
        } 
        System.out.println(p.get(p.size()-1)); 
      } 
      p.clear(); // 每个 i 结束,清空数组,重计下一个i的因子。 
    } 
    System.out.println("\n共找到"+count+"个完数!"); 
  } 
} 

以上所述就是本文的全部内容了,希望大家能够喜欢。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号