最多约数问题
问题:正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,2,5,10 都是正整数10 的约数,且div(10)=4。设a 和b 是2 个正整数,a≤b,找出a和b之间约数个数最多的数x及其最多约数个数。
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c,i,j,x,z,m=0,p=0;
scanf("%d/n",&a);
scanf("%d/n",&b);//输入数值
if(a>b)
printf("error");//当b小于a报错;
else
j=b-a+1;
int q[j],w[j];
for(c=a,z=0; c<=b; c++,z++)//第一层循环从a到b
{
x=0;q[z]=c;
for(i=1; i<=c; i++)
//第二层循环从c开始除以从1开始的数,并判断余数
{
if(c%i==0)//
x++;
}
w[z]=x;
}
for(i=0;i<j;i++)//比较约数最多的数
{
if(w[i]>=m)
{
m=w[i];
p=i;
}
}
printf("%d %d\n",q[p],m);//输出约数最多的数和约数有多少个
return 0;
}
菜鸟刚学习,写的比较简单