题解 | 约数的个数
约数的个数
https://www.nowcoder.com/practice/04c8a5ea209d41798d23b59f053fa4d6
#include <stdio.h>
int main() {
int a, b[1000];
while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
for(int i=0;i<a;i++){
scanf("%d",&b[i]);
}
for(int i=0;i<a;i++){int k=0;
for(int j=1;j*j<=b[i];j++){
int m=b[i]%j; int n=b[i]/j;
if(m==0&&n!=j) k=k+2;
if(m==0&&n==j) k=k+1;
}
printf("%d\n",k);
}
}
return 0;
}
这个题目对时间复杂度有要求,约数到开方就行
同时注意约数相同只算一次
#我的工作日记#