原题链接:亲和数
解题思路:
1.用变量保存输入的两个数字
2.取出其中一个数字,从1开始到这个数字循环取模,如果能够整除就累加
3.如果累加的结果正好等于另一个数字,就可以输出 YES
4.反向再比较一次
注意事项:
1.注意可以循环到数字的一半就可以了,比如 220 从 1 到 110 循环。
参考代码:
import java.util.Scanner; class qinheshu { public static void main(String[] args) { Scanner input = new Scanner(System.in); while (input.hasNext()) { int count = input.nextInt(); //储存接下来有几组数据 int[][] nums = new int[count][2]; //储存数据的二维数组 for (int i = 0; i < count; i++) { nums[i][0] = input.nextInt(); //输入这组数据 nums[i][1] = input.nextInt(); } for (int i = 0; i < count; i++) { //正反都判断一次 if (isQinHeShu(nums[i][0], nums[i][1]) && isQinHeShu(nums[i][1], nums[i][0])) { System.out.println("YES"); } else { System.out.println("NO"); } } } } public static Boolean isQinHeShu(int a, int b) { int sum = 0; //累加记录值 for (int i = 1; i <= a / 2; i++) { if (a % i == 0) //是否是因数 { sum += i; } } return sum == b; //返回真假 } }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复