java一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。(java50道经典编程题)

2023-11-12

题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。

对于这道题其实乍一看可能觉得比较困难,但是你只要,知道一个问题作为求因子,只需要从1开始让你输入的这个数一直除就好了,记得每回合要+1。找出这个数的全部因子。然后加起来和这个数比较一下看看是否相等,如果相等的话就可以了,注意一定不要在因子中把自己也算上,要除去这个数本身,有了思想就可以上代码了:

//找出完数
public class Complete_number {
    public static void main(String [] args) {
    	for(int i = 1;i<=1000;i++) {
    		int num = 0;
    		for(int j = 1;j<i;j++) {
    			if(i%j == 0) {
    				num += j;
    			}
    		}
    		if(i == num) {
    			System.out.println(i+"是完数");
    		}
    	}
    	
    }
}

老规矩看完了我的代码我们再来看一下大神代码:

public static void no9() {
		for(int i = 2;i < 1000;i++) {
			//判断i是不是完数
			int num = 0;
			for(int j = 1;j <= i/2;j++) {
				//找因子
				if(i % j == 0) {
					num += j;
				}
			}
			if(i == num) {
				System.out.println("完数有"+i);
			}
		}
	}
	

如果你是抱着学习的态度来的,并且仔细的看完了这两段代码你会发现一个问题。在二次循环中我的代码跑了i次,而大神的代码则跑了i/2次,这是一个和前面求质数题一样的细节,当我们循环到一个数的1/2,那么就可以保证基本后面的数都不是因子了。所以这就是一个细节,你要问我大神怎么掌握这些细枝末节的东西的,我想说熟能生巧,代码量不够,所以你就写不出好的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。(java50道经典编程题) 的相关文章

随机推荐

  • Unity3D 对于在VR中普通摄像头和VR摄像头同时存在——分屏

    这两天在研究关于VR的分屏 由于甲方要求需要在VR运行时 有多个一般的摄像头像监控一样定点存在场景中 而且能同时在屏幕上看到 我查了很多资料 并没有查到相关特别好的资料 只能找到如下的解决方案 解决方案 1 首先 VR摄像头和一般摄像头并不
  • 神奇字符串

    一个神奇字符串S仅包含 1 和 2 并遵守以下规则 字符串S是神奇的 因为连接字符 1 和 2 的连续出现次数会产生字符串S本身 字符串S的前几个元素如下 S 1221121221221121122 如果我们将S中的连续 1 和 2 分组
  • maven报错:[ERROR] 不再支持源选项 7。请使用 8 或更高版本。

    解决方案 pom xml文件中增加maven编译的java version jdk版本设置 以及maven compiler source 资源编译jdk版本设置和maven compiler target 资源构建jdk版本设置 JDK
  • 如何转行Python,以工作为导向可能会学的更快

    我是一个曾经做摄影行业的学生 后来转行做计算机 选择了Python 现在已经做了五年Python 月薪38k 因为我也是转行来学习Python的 所以有很多宝贵的经验给大家提供 因为转行并不是一个容易的事情 但是耐不住Python现在的工资
  • Android中的webview监听每次URL变化

    通过这个可以监听Android中webview访问的URL变化 webView setWebViewClient new WebViewClient Override public void onLoadResource WebView v
  • SpringBoot 的 MyBatis 多数据源配置

    实验环境 JDK 1 8 SpringBoot 2 4 1 Maven 3 6 3 MySQL 5 7 因为我本地只有 MySQL 数据库 为了方便演示 我会在启动一个本地 MySQL 在 MySQL 创建两个数据库 每个库中均有一个表 以
  • 关于SQL Server 输入SQL语句不能自动提示的处理方案

    打开 配置工具 SQL Server 配置管理器 看到安装sql server时输入的名称MYSQLSERVER 服务已停止 需启动服务 并将启动模式设置为自动
  • qt中选择文件夹中的中文路径的问题

    参考博客 https blog csdn net m0 37906001 article details 76672634 转换为char 使用的时候 QString fileName1 fileName1 toStdWString c s
  • 自制黑科技------桌面整理工具

    桌面文件太多 找不到文件 通过使用程序 科学的区域划分和文件归类 帮你的桌面变得更整齐 提高你的使用效率 附上桌面图片一张 点击打开链接
  • BottomNavigationView与Navigation使用

    目录 1 as自动生 2 xml代码 如果要修改底部的图标和文字需要去bottom nav menu修改 如果你要修改默认点击颜色需要去主题颜色修改 如果你要修改底部背景颜色可以在BottomNavigationView 的背景颜色修改 如
  • QFile的文件清空操作

    QFile file etc wpa supplicant conf file open QIODevice ReadOnly QTextStream io file file close file open QIODevice Trunc
  • ARM第五章平时作业

    第 5 章 S3C2440 嵌入式系统 共 63 分 一 简述启动代码存储在 NAND Flash 存储器上时 S3C2440 的启动过程 6 分 为了支持 NAND Flash 的 boot loader S3C2440A 配备了一个内部
  • java环境变量配置详细教程

    1 什么是环境变量 环境变量 environment variables 一般是指在操作系统中用来指定操作系统运行环境的一些参数 如 临时文件夹位置和系统文件夹位置等 环境变量是在操作系统中一个具有特定名字的对象 它包含了一个或者多个应用程
  • Java 访问权限 内部类总结

    在Java中 可以将一个类定义在另一个类里面或者一个方法里边 这样的类称为内部类 广泛意义上的内部类一般包括四种 成员内部类 局部内部类 匿名内部类 静态内部类 1 成员内部类 1 该类像是外部类的一个成员 可以无条件的访问外部类的所有成员
  • Java桥接模式

    基本介绍 1 桥接模式 Bridge模式 是指 将实现与抽象放在两个不同的类层次中 使两个层次可以独立改变 2 是一种结构型设计模式 3 Bridge模式基于类的最小设计原则 通过使用封装 聚合及继承等行为让不同的类承担不同的职责 它主要特
  • vue2 维护状态key的作⽤和原理

    1 key定义 为了给 Vue 个提示 以便它能跟踪每个节点的身份 从 重 和重新排序现有元素 你需要为每项提供 个唯 key 2 写法 li item name li 3 作 key 值使 数组的索引index 或者不加 在数组元素顺序打
  • 2023最新版本Activiti7系列-源码篇-初始化过程

    源码分析 1 设计模式 1 1 命令模式 https dpb bobokaoya sm blog csdn net article details 89115420 1 2 责任链模式 https dpb bobokaoya sm blog
  • xss攻击的了解

    常见的xss攻击方法 1 绕过XSS Filter 利用 lt gt 标签注入Html JavaScript代码 2 利用HTML标签的属性值进行xss攻击 例如 img src 当然并不是所有的Web浏览器都支持Javascript伪协议
  • 【LeetCode刷题】203 移除链表元素 java

    题目 给你一个链表的头节点 head 和一个整数 val 请你删除链表中所有满足 Node val val 的节点 并返回 新的头节点 示例 方法一 先对头节点做处理 使其不为val class Solution public ListNo
  • java一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。(java50道经典编程题)

    题目 一个数如果恰好等于它的因子之和 这个数就称为 完数 例如6 1 2 3 编程 找出1000以内的所有完数 对于这道题其实乍一看可能觉得比较困难 但是你只要 知道一个问题作为求因子 只需要从1开始让你输入的这个数一直除就好了 记得每回合