标签:style class blog code http tar
题意:给定一个区间,求这个区间中的Almost prime number,Almost prime number的定义为:只能整除一个素数。
思路:既然是只能整除一个素数,那么这些数肯定为素数的x次方(x > 1),那么只要先打出素数表,然后在素数表上暴力找一遍就可以了,因为素数表只要找到sqrt(Max),大概100W,然后每个数找的复杂度为log(n),这样复杂度是可以接受的。
代码:
#include <stdio.h> #include <string.h> const int N = 1000005; int t, vis[N], pn = 0; long long l, r, prime[N]; int main() { for (int i = 2; i < N; i++) { if (vis[i]) continue; prime[pn++] = i; for (int j = i; j < N; j += i) vis[j] = 1; } scanf("%d", &t); while (t--) { scanf("%lld%lld", &l, &r); long long ans = 0; for (int i = 0; i < pn; i++) { for (long long j = prime[i] * prime[i]; j <= r; j *= prime[i]) { if (j >= l) ans++; } } printf("%lld\n", ans); } return 0; }
UVA 10539 - Almost Prime Numbers(数论),布布扣,bubuko.com
UVA 10539 - Almost Prime Numbers(数论)
标签:style class blog code http tar
原文地址:http://blog.csdn.net/accelerator_/article/details/33865387