A37454. 质因数的个数因数:又称为约数,如果整数a除以整数b(b!=0) 的商正好是整数而没有余数,我们就说b是a的因数。质数:又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。2是最小的质数。质因数:如果一个数a的因数b同时也是质数,那么b就是a的一个质因数,例如: 8=2x2x2,2就是8的质因数;12=2x2x3,2和3就是12的质因数。
填空题
困难
知识点
题目描述
质因数的个数
因数:又称为约数,如果整数a除以整数b(b!=0) 的商正好是整数而没有余数,我们就说b是a的因数。
质数:又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。2是最小的质数。
质因数:如果一个数a的因数b同时也是质数,那么b就是a的一个质因数,例如: 8=2x2x2,2就是8的质因数;12=2x2x3,2和3就是12的质因数。
题目描述:
给定两个正整数N和M (1<=N<=M<=1e7) ,统计N到M之间 (含N和M) 每个数所包含的质因数的个数,输出其中最大的个数。
例如:
当N=6,M=10,6到10之间
6的质因数是2、3,共有2个
7的质因数是7,共有1个
8的质因数是2、2、2,共有3个
9的质因数是3、3,共有2个
10的质因数是2、5,共有2个
6到10之间的数中质因数最多的是8,质因数有3个,故输出3.
输入描述
输入两个正整数N和M (1<=N<=M<=1e7),两个正整数之间用一个空格隔开
输出描述
输出一个整数,表示质因数个数中的最大值
样例输入
6 10
样例输出
3
参考答案
#include <bits/stdc++.h>
using namespace std;
//定义了一个用来判断当前数最大质因数的函数
int f (int o) {
int c = 1, k = 0;
while (o != 1) {
for (int i = 2; i <= sqrt(o); i++) {
if (o % i == 0) {
c++;
k = i;
break;
}
}
o /= k;
}
return c;
}
int main() {
int maxn = 0, n, m;
cin >> n >> m;
for (int i = n; i <= m; i++) {
if (f(i) >= maxn)
maxn = f(i);
}
cout << maxn;
return 0;
}
上一题
下一题