ACMSTEP 2.1.6 招新朋友 //数论 互质
2011-08-11 11:03
465 查看
原题链接
一开始的想法用最大公约数 == 1 这个方法来做 用了传统的辗转相除法,还用了快速位运算求GCD的方法 都TLE了。
最后倒过来想了一下,能把这个数除尽的这个数 及这个数的倍数一定都和这个数有公因子,通过Hash标注。查一下个数就可以了。
事实证明。。递归很费时。。。
一开始的想法用最大公约数 == 1 这个方法来做 用了传统的辗转相除法,还用了快速位运算求GCD的方法 都TLE了。
最后倒过来想了一下,能把这个数除尽的这个数 及这个数的倍数一定都和这个数有公因子,通过Hash标注。查一下个数就可以了。
事实证明。。递归很费时。。。
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <cctype> #include <string> #include <vector> #include <queue> #include <algorithm> using namespace std; #define N 32769 int a ; int main() { int n, cases, i ,j ; cin>>cases; while (cases--) { cin>>n; memset(a, 0, sizeof(a)); for (i=2; i<=n; i++) { if (a[i] == 0 && n % i == 0) { for (j = i; j<=n; j+=i) a[j] = 1; } } int countn = 0; for (i = 1; i<n ; i++) { if (a[i] == 0) countn++; } cout << countn <<endl; } return 0; }
相关文章推荐
- (hdu step 2.1.6)找新朋友(欧拉函数的简单使用:求与n互质的元素的个数)
- 找新朋友 + 数论
- 【数论-欧拉函数】HDU 3501 Calculation 2 ( 与n不互质的数的和 )
- Visible Trees + 数论,互质和容斥原理
- ACMSTEP 2.1.1 最小公倍数 //数论
- hdoj 1286 找新朋友 【数论之欧拉函数】
- ACMSTEP 2.1.2 How many prime numbers //数论 素数
- marcool 0200 互质二元组 数论
- HDOJ 1286 找新朋友(数论)(欧拉函数)
- ACMSTEP 2.1.5 又见GCD //数论 GCD
- 数论经典问题:与x互质的数的和
- hdoj 1286 找新朋友 【数论之欧拉函数】
- 【数论】 求小于等于 N 的与N互质的所有数的乘积mod N
- ACMSTEP 2.1.8 小数化分数 2 //数论 数学 没AC
- 求1到n中与n互质的和(数论)
- [ACM Steps]找新朋友 求互质个数 欧拉函数
- HDU 2.1.6 找新朋友
- 找新朋友(欧拉互质)
- ACMSTEP 2.1.4 Largest prime factor //数论 素数
- HDU 2.1.6 找新朋友