题目描述
任何一个大于 1 的正整数都至少有两个因数,即 1 和它自己。现在给你两个正整数 n,m,请输出 n~m 中因数最少的数及因数个数,如果有因数最少的数有多个,则输出因数最少的数的个数和它们的因数个数。
输入
若干行,每行两个正整数,n,m。
输出
行数与输入相同,每行两个正整数,用一个空格隔开,意义如题目描述。
样例输入 复制
6 10
74 78
样例输出 复制
7 2
2 4
代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[10001],b[10001],c[10001];
int main() {
int n,m,x,minn,num,num2,wtf;
while(cin>>n>>m) {
x=m-n+1;
for(int i=0; i<x; i++) {
a[i]=n;
n++;
}
num=0;
num2=0;
for(int i=0; i<x; i++) {
for(int j=1; j<=a[i]; j++) {
if(a[i]%j==0) {
num++;
}
}
b[i]=num;
num=0;
}
minn=b[0];
for(int i=0; i<x; i++) {
if(minn>=b[i]) {
minn=b[i];
}
}
for(int i=0; i<x; i++) {
if(minn==b[i]) {
num2++;
}
}
for(int i=0; i<x; i++) {
if(minn==b[i]) {
wtf=i;
break;
}
}
if(num2==1) {
cout<<a[wtf]<<" "<<minn<<endl;
} else
cout<<num2<<" "<<minn<<endl;
}
}
//不对来砍我