Basic求10000以内的完美数

完全数(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 b
If a = c Then Print Str(a)
Next a

另附上java版的代码

import java.util.ArrayList;
public class T013 {
  public static void main(String[] args){
    ArrayList p = new ArrayList(); // 保存每组的分解因子
    int count = 0; // 计数(完数的总个数)
    int sum;  // sum = (每个因子之和)
    for(int i=2;i<10000;i++){  // 测试每个数 i
      sum = 0;
      for(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)

相关推荐

  • Basic求10000以内的完美数

    完全数(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 b If a = c Then Print Str(a) Next a 另附上java版的代码 im

  • Java语言求解完美数代码分析

    1.概念 首先我们理解一下,什么叫做完美数? 问题描述:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数.简称"完数" 例如, 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064 按照完数的定义,其实用程序求解完数并不是太难,先求解出这个数的所有真因子,然后相加,判断是否等于它本身即可.但是,在这个数

  • GO语言求100以内的素数

    本文实例讲述了GO语言筛选法求100以内的素数.分享给大家供大家参考.具体实现方法如下: 思路:找出一个非素数就把它挖掉,最后剩下就是素数. 下面就来欣赏一下go简洁的代码吧 目前不支持GO的代码插入,使用xml的代替一下. 复制代码 代码如下: package main import (     "fmt"     "math" ) func main() {     var i, j, n int     var a [101]int     for i = 1

  • Ruby、PHP、Shell实现求50以内的素数

    ruby求50之内的素数的方法,感觉对比PHP和SHELL方法是最简单的,但SHELL中可以利用factor命令,而PHP中没有求素数的对应函数的,需要自己设计算法,三种方式大家对比学习下,应该还有更优更简单的方法的. 复制代码 代码如下: #encoding:utf-8 #求50以内的素数(注意数字中..与...的区别)   for i in 2..50 #1默认不为素数,所以从1-50范围内被排除     f=true #起始假定每个数都是素数     for p in 2...i #比自身

  • php求斐波那契数的两种实现方式【递归与递推】

    本文实例讲述了php求斐波那契数的两种实现方式.分享给大家供大家参考,具体如下: 斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相

  • python如何求100以内的素数

    方法一,用for循环来实现 num=[]; i=2 for i in range(2,100): j=2 for j in range(2,i): if(i%j==0): break else: num.append(i) print(num) 方法二,用函数来实现 import math def func_get_prime(n): return filter(lambda x: not [x%i for i in range(2, int(math.sqrt(x))+1) if x%i ==

  • C++求斐波那契数的实例代码

    题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 -- 如果求其第6项,则应为8. 求第n项菲氏数. 输入描述:输入数据含有不多于50个的正整数n(0<=n<=46). 输出描述:对于每个n,计算其第n项菲氏数,每个结果应单独占一行. 题目分析:先把第0项到第46项的斐波那契数求出来,放在一个数组中,然后,直接查表即可,这样就不会超时. 参考代码:

  • java求100以内的素数示例分享

    题目:求100之内的素数 方法一: package airthmatic; public class demo8 { /** * 素数是指因数只有1和本身的数字 * @param arg */ public static void main(String arg[]) { for(int i=1;i<=100;i++) { if(find(i)) System.out.print(i+" "); } } /** * 1-n个自然数中的素数 * @param n * @return

  • java使用筛选法求n以内的素数示例(java求素数)

    复制代码 代码如下: /** * @author jxqlovedn * 埃拉托斯特尼素数筛选法,请参考:http://zh.wikipedia.org/zh-cn/埃拉托斯特尼筛法 */public class AratosternyAlgorithm { public static void getPrimes(int n) {  if(n < 2 || n > 1000000)   // 之所以限制最大值为100万,是因为JVM内存限制,当然有其他灵活方案可以绕过(比如位图法)   th

  • jQuery寻找n以内完全数的方法

    本文实例讲述了jQuery寻找n以内完全数的方法.分享给大家供大家参考.具体分析如下: 数的完满取决于它的因数(能整除原数的那些数). 例如:12的因数是1,2,3,4和6.当一个数的各因数之和大于该数本身时,该数称为"盈"数.于是12是一个盈数,因为它的因数加起来等于16.另一方面,当一个数的因数之和小于该数本身时,该数称为"亏"数.所以10是一个亏数,因为它的因数(1,2和5)加起来只等于8. 最有意义和最少见的数是那些其因数之和恰好等于其本身的数,这些数就是完

随机推荐