#include<stdio.h>
#include<stdlib.h>
int *m;
int main()
{
int a,b;
int i,j,k;
int s=1;//用以计算约数的累乘
int temp;
int x,max=0;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++)
{
s=1;//每次循环需要归1
temp=i;
m=(int *)malloc(i*sizeof(int));//动态分配空间
for(k=0;k<i;k++)//数组初始置0
{
m[k]=0;
}
j=2;//分解质数
while(temp>=j)
{
if(temp%j==0)
{
m[j]++;
temp=temp/j;
j=2;
}
else
{
j++;
}
}
for(k=0;k<i;k++)//根据公式求约数
{
if(m[k]!=0)
{
s=s*(m[k]+1);
}
}
if(s>max)//更新
{
x=i;
max=s;
}
free(m);//释放空间
}
printf("%d %d",x,max);
return 0;
}
求最多约数-分解质因数
最新推荐文章于 2020-09-30 00:03:25 发布