因数表
打因数表,基本思想是模拟人找因数的过程。
因数,无非是自己和自己的倍数
通过一个个枚举不同数的倍数得到因数表。
代码如下:
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <string.h> 5 #define ll long long 6 7 using namespace std; 8 9 const int MX = ; 10 ll sum[MX]; 11 12 void get_table(ll n) 13 { 14 ll x = sqrt(n); 15 for (int i = 1; i <= x; i++) 16 { 17 for (int j = i + 1; j * i <= n; j++) 18 { 19 sum[i * j] += 2; 20 } 21 sum[i * i]++; 22 } 23 } 24 25 int main() 26 { 27 memset(sum, 0, sizeof(sum)); 28 int q; 29 scanf("%d", &q); 30 while(q--) 31 { 32 memset(sum, 0, sizeof(sum)); 33 ll x; 34 scanf("%lld", &x); 35 get_table(x); 36 printf("%lld\n", sum[i]); 37 } 38 return 0; 39 }
如有错误,欢迎评论指正!
化繁为简 大巧不工