charles&keith官网:有6个约数的两位数有几个?

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 05:32:12

main()
{
int i,j;
int count;
int total = 0;
for (i=10;i<100;i++)
{
count = 0;
for (j=1;j<=i;j++)
{
if (i%j==0) count++;
}
if (count==6)
{
printf("%d\t",i);
total++;
}
}
printf("\nThe Total is %d\n",total);
return 0;
}

运行结果如下
12 18 20 28 32 44 45 50 52 63 68 75 76 92 98 99
The Total is 16
可知共有16个。

一个数的约数个数

可以先将这个数分解质因数 然后写成指数形式,
那么约数=指数加1再相乘
(具体原理可以用加法/乘法原理推出)

有6个约数的数其指数的指数为:2*3或1*6
则这个数应=x*(y^2) 或x^5 (x,y均为质数)
先做个指数表int[] zhishu
然后做个存结果的int[] result=new int[];
int temp=0;
for(int i=0;i<zhishu.length;i++)
{
for(int j=0;j<zhishu.length;j++)
{
if(j==i) continue;
if(i*j*j<10||i*j*j>=100) continue;
result[temp]=i*j*j;
temp++
}
}
for(int i=0;i<zhishu.lengtn;i++)
{
if(i*i*i*i*i<10||i*i*i*i*i>=100)
continue;
result[temp]=i*i*i*i*i;
temp++
}

应该会有更好的算法~不过基本思路是这样的

有12个。。。