牛牛的k合因子数
牛牛的k合因子数
http://www.nowcoder.com/questionTerminal/f28c2bd6bc524e0d92b161c44e27a366
计算n范围内的质数, 然后计算n范围内的每个数的因数除质数外还有几个因数, 最后进行统计;
#include<bits/stdc++.h> using namespace std; bool b[200000];//用来判断因数是否为质数 int d [600]; int sum[200000]; bool a[200000]; int n, m; int ans[200000]; void fs(int x){ for (int i = 1; i <= sqrt(x); i ++){ if (i == sqrt(x)){ if(b[i] && x %i == 0) sum [x] ++; } else{ if(b[i] && x%i == 0) sum [x] ++; if(b[x / i] && x % i == 0) sum [x] ++; } } } int main(){ cin >> n >> m; b[1] = false; b[2] = false; b[3] = false; for (int j = 4; j <= n; j ++) for (int i = 2; i <= sqrt(j); i ++) if (j % i == 0){ b[j] = true; break; } for (int i =1; i <= n; i ++) fs(i), ans[sum[i]] ++; while (m --){ int x; cin >> x; cout << ans[x] <<endl; } return 0; }