题目:
正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,2,5,10 都是正整数10 的约数,且div(10)=4。设a 和b 是2 个正整数,a≤b,找出a和b之间约数个数最多的数x。
输入
对于给定的2个正整数a≤b。
输出
编程计算a 和 b 之间约数个数最多的数的数量,和约数最多的数。
分析
可以写一个统计约数个数的方法div(),然后在main里面写一个for循环,找出约数个数最多的数。
代码
cpp
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//最多约数
int div(int n){
int count = 0;//统计约数个数
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
return count;
}
int main() {
int first, end;//区间数
scanf("%d %d", &first, &end);
int max = 0, maxNum = 0;
for (int j = first; j <= end; j++) {
int temp = div(j);
if (temp > max) {//如果约数个数比max大,则将该数赋给max,并记录下该约数最多的数
max = temp;
maxNum = j;
}
}
printf("%d %d", max, maxNum);
return 0;
}