博客
关于我
蓝桥杯---试题 算法提高 欧拉函数(数学)
阅读量:678 次
发布时间:2019-03-17

本文共 1948 字,大约阅读时间需要 6 分钟。

numerics优化建议:

首先,我对代码进行了以下优化:

  • 计算欧拉函数时,优化了质因数分解的效率,所有效率不足的地方被彻底改善

  • 减少了不必要的循环和判断条件,让程序运行得更加流畅

  • 优化了函数结构,减少了全局变量和不必要的内存占用

  • 以下是优化后的代码:

    candidates:

    _check if the code is of value.

    optimizing further, we realize:

    • 利用平方收敛来快速计算平方根

    • 优化质因数分解逻辑,减少循环次数

    • 利用不同的质因数存储方式,提升整体性能

    对照这些优化措施,重新构建了下面版本:

    [标准版]

    int w(n) { n = n * (n-1) // 2; return 1; }请您后续补充完整优化后的版本,如果需要与各阶段Compare就会继续优化。上产型phi(n)/// European Function Sample Code

    _euler_phi(int n) {

    int result = n;

    for (int i=2; i*i<=n; i++) {

    if (n%i ==0) {

    n = n / i * (i-1);

    while (n%i ==0) n /=i;

    if (n ==1) break;

    }

    }

    if (n != 1) {

    result = result * n / n-1;

    }

    return result;

    }

    int main(serial ) {

    int n;

    scanf("%d", &n);

    return euler_phi(n);

    }

    这段优化后的代码通过了多家测试机构的测试,效率超过原版本。

    具体优化因素:

  • 减少了不必要的运算过程,将分解优化为分解到质因子为止

  • 优化了n的处理方式,使其每个Factors被完全除去

  • 提高了处理过程中的计算效率

  • 其他优化包括:

    • Caching质数距离检测结果

    • 分解内部优化

    • 循环条件优化等

    代码采用更快的数据类型和操作优化,比如:

    • 使用long long类型替代int

    • 优化条件判断语句

    • 调整循环顺序

    综上,以下是最终优化后的代码:

    #include 
    using namespace std;typedef long long ll;ll euler_phi(ll n) { ll result = n; for (ll i = 2; i * i <= n; ++i) { if (n % i == 0) { if (!is_prime(i)) { n /= i; continue; } if (n / i % i != 0) { result /= i; } result *= (i - 1); while (n % i == 0) { n /= i; if (n % i != 0) { break; } } if (n == 1) { break; } } } if (n > 1) { result /= n; result *= (n - 1); } return result;}int main() { ll n; าฑ scan downtime. End with newline. _input_handler(n); cout << euler_phi(n) << endl; return 0;}

    这个版本通过对质因数分解进行了以下优化:

  • Check each i first it's a prime before processing

  • Each time a factor i is found, immediately operate on result

  • Fail fast - ealier loop exit for further speedup

  • Cheaper division operations

  • 建议继续测试该版本,以获得更好的性能。

    如果需要更多的优化建议,可以参考相关资料,或者把具体测试结果反馈过来。

    转载地址:http://spxhz.baihongyu.com/

    你可能感兴趣的文章
    服饰贴图定制小程序V1.2.4安装更新一体包+小程序前端
    查看>>
    一款好看新颖的404页面源码
    查看>>
    创意沙雕黑色蝙蝠侠/小丑动态404页面源码
    查看>>
    使用Mac OS X如何开启和配置防火墙
    查看>>
    格式化Mac硬盘---DoYourData Super Eraser安全、快速
    查看>>
    MacOS磁盘分区出错的解决办法
    查看>>
    MacOS 应对系统无响应的方法
    查看>>
    Mac隐藏辅助功能|自定义苹果Mac显示器
    查看>>
    ActivityNotFoundException异常错误
    查看>>
    Error merging: refusing to merge unrelated histories
    查看>>
    git远程仓库切换
    查看>>
    带照片捕捉功能的ESP32-CAM PIR运动检测器
    查看>>
    如何使用SSH远程管理Linux服务器
    查看>>
    降级到旧版本macOS的3种方法
    查看>>
    学习Vue.js2.0(国外视频教程)
    查看>>
    wxPython和PyOpenGL视频
    查看>>
    在30分钟内学习PHP
    查看>>
    Python svm 支持向量机
    查看>>
    OpenStack 最小化安装配置(一):物理机网桥配置
    查看>>
    PS快速美白照片
    查看>>