在三位数里,有9个约数的数有几个?怎么算?

问题描述:

在三位数里,有9个约数的数有几个?
怎么算?

100
196
225
441
484
676

因为如果不是平方数,那么它的约数的个数一定会是偶数个,
只有平方数的约数的个数才会是奇数个。
所以考虑的数字范围是
{10^2, 11^2, 12^2 , 13^2, ... 30^2 , 31^31}
={100, 121, 144 , 169, ... 900,961}
然后
看 100在小于10的时候是否只有4个约数,
看 121在小于11的时候是否只有4个约数,
看 144在小于12的时候是否只有4个约数,
。。。
看 961在小于31的时候是否只有4个约数。
结果是:100 196 225 256 441 484 676
这个结果我是编程序算出来的,也没有手算。
代码:
#include
int main()
{
int i,j,cnt,num;
for(i=10;i {
num=i*i;
cnt=0;
for(j=1;j {
if(num%j==0) {cnt++;}
}
if(cnt==4) {printf(" %d ",num);}
}
getch();
}

9=9=3*3所以有9个约数的数的标准分解式具有两种形式:p^8(一个质数的8次方)或者q^2*r^2(两个不同的质数平方的乘积).为了使这个数在100~999之间,则100≤p^8≤999,100≤(qr)^2≤999分别解得p=2,及10≤qr≤30因此所求的...