题目地址
判断是不是约数简单,判断的时候循环的退出条件应该要小于该数。真约数百度说不包括1和自身,可是题目示例
包括了1,只能按照题目来。想法很简单,可是很久之前做的,现在想的时候竟然想的是用一个数组来存储约数真
的是一言难尽啊,而之前的源代码是只需要一个变量,如果是约数就加一些。汗颜
#include <stdio.h>
#include <math.h>
int main(void) {
int M;
scanf("%d", &M);
for(int i = 0; i < M; i++) {
int num[2];
int result1 = 0;
int result2 = 0;
for(int j = 0; j < 2; j++)
scanf("%d", &num[j]);
for(int j = 0; j < 2; j++) {
if(j == 0) {
for(int k = 1; k < num[j]; k++) {
if(num[j] % k == 0)
result1 += k;
}
}
else{
for(int k = 1; k < num[j]; k++) {
if(num[j] % k == 0)
result2 += k;
}
}
}
if(result1 == num[1] && result2 == num[0])
printf("YES\n");
else
printf("NO\n");
}
}