zoukankan      html  css  js  c++  java
  • 亲密数

    亲密数

    需求分析

    本项目的关键是判断区间内的每一个数是否满足亲密数的定义。亲密数的定义是:如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对(参考百度百科对亲密数的解释)

    功能设计

    • 基本功能:查找、判断并输出亲密数
    • 扩展功能:输入一个区间的两个端点,判断该区间内是否存在亲密数,根据判断输出相应的结果

    设计实现

    首先定义两个变量a,b,存储用户输入的区间头和尾,之后使用for循环遍历区间,逐个判断其真因子和是否等于它本身,如果不相等继续判断其真因子和的真因子和是否等于它本身,如果有的话输出该数和他的真因子和,同时计数变量count的值加一,最后判断计数变量count的值是否等于初值,如果相等说明区间内未找到亲密数,输出提示“该区间内没有亲密数”。

    测试运行

    正常情况

    输入图片说明

    异常情况

    输入图片说明

    核心代码

            for (int i=a;i<=b ;i++) {   //遍历a到b
                for(int j=1;j<i;j++){   //遍历比该数小的正整数
                    if(i%j==0) {        //如果j是i的因子
                        total1 = total1 + j;  //total1是在循环外定义的,初值为0,用于计算真因子和
                    }
                }
                if(total1!=i){      //如果真因子和不等于它本身
                    for(int k=1;k<total1;k++){   //遍历1到total1
                        if(total1%k==0) {        //如果k是total1的因子
                            total2 = total2 + k;  //total2是在循环外定义的,初值为0,用于计算total1的真因子和
                        }
                    }
                    if(total2==i &&  i<total1){    //如果i的所有正因子和等于total1,total1的所有正因子和等于
                        System.out.println(i+"和"+total1+"是一对亲密数");
                        count++;
                    }
                }
                total1=0;      //重置total1
                total2=0;      //重置total2
            }
    
    

    总结

    这个项目与完全数的求解大致过程较为相似,所以我直接使用了完全数的模板,修改了其中的核心部分代码。此过程我节省了大量时间,这启示我在实现项目的同时要多动脑子,这样可以少走许多弯路。

    PSP

    步骤 耗时(min) 百分比
    需求分析 15 33.3%
    设计 5 11.1%
    代码实现 5 11.1%
    测试 5 11.1%
    分析总结 15 33.3%
  • 相关阅读:
    Thymeleaf
    快速创建springBoot
    多环境的配置
    第一个SpringBoot
    shiro第三天整合jdbc
    shrio 第二天
    Python 算法集合
    张凤强-《工会固定资产管理系统的设计与实现》随笔
    李翔-《营口港资产管理系统设计与实现》随笔
    刘晶-《高校固定资产管理系统的设计与实现》随笔
  • 原文地址:https://www.cnblogs.com/20175317zrw/p/10923544.html
Copyright © 2011-2022 走看看