码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉函数,求素数

时间:2015-01-29 12:29:08      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

  1. /*=======================================================*\
  2. | 递推求欧拉函数phi(i)
  3. 欧拉函数\varphi(n)是小于或等于n的正整数中与n互质的数的数目
  4. \*=======================================================*/
  5. #define N 3000000
  6. __int64 phi[N + 100];
  7. void Euler()
  8. {
  9. int i, j;
  10. for(i = 1; i < N; i++)
  11. phi[i] = i;
  12. for(i = 2; i < N; i++)
  13. if(i == phi[i]) //若i为素数 第一次不是
  14. for(j = i; j < N; j += i) //让j累加i
  15. phi[j] = (phi[j] / i) * (i - 1); //求欧拉函数
  16. }
  17. /*=========================================================*\
  18. 筛选法求一个数的最大素因子在素数表中是第几个素数
  19. 利用筛选法得到素数,每次用一个素数更新它的所有倍数,
  20. 更新为这个素数的标号,
  21. 由于大的素数会更新小的素数,所以最后得到的就是最大素因子
  22. \*=========================================================*/
  23. #include <string>
  24. #define maxn 1000000
  25. int prime[maxn];
  26. void f()
  27. {
  28. memset(prime, 0, sizeof(prime));
  29. for(int i=2, flag=0; i<maxn; i++)
  30. {
  31. if(!prime[i])
  32. {
  33. flag++;
  34. for(int j=i; j<maxn; j+=i)
  35. prime[j] = flag;
  36. }
  37. }
  38. }





附件列表

     

    欧拉函数,求素数

    标签:

    原文地址:http://www.cnblogs.com/sober-reflection/p/cac04cd01e2a149341839a52eff990ce.html

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!