题解 | 约数的个数
约数的个数
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; }
这个题目对时间复杂度有要求,约数到开方就行
同时注意约数相同只算一次
#我的工作日记#