Eureka129 2023-10-19 16:19 采纳率: 100%
浏览 4
已结题

输入两个数,求第三个勾股数

img


刚学,有人看下我这个哪里有问题吗,然后算法能否优化一下?
刚学,有人看下我这个哪里有问题吗,然后算法能否优化一下?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-19 21:49
    关注

    【以下回答由 GPT 生成】

    优化后的代码:

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    int main() {
        int a, b;
        cin >> a >> b;
        int d = a * a + b * b;
        int e = a * a - b * b;
        double sqrt_d = sqrt(d);
        double sqrt_e = sqrt(e);
    
        if (sqrt(d) == ceil(sqrt(d))) {
            cout << sqrt_d << endl;
        } else if (sqrt(e) == ceil(sqrt(e))) {
            cout << sqrt_e << endl;
        } else {
            cout << "-1" << endl;
        }
        return 0;
    }
    

    修正的错误: 1. 修改 using namespace stdsusing namespace std,将 stds 改为 std。 2. 修改 inta,bint a, b,添加逗号 , 分隔两个变量。 3. 修改 cin>>a>>b>>endlecin >> a >> b;,将错误的 endle 改为 ;。 4. 修改 int d=a>baibint d = a * a + b * b;,将 > 改为 * 表示乘法运算,添加变量之间的乘号 *。 5. 修改 int e=asbaib:int e = a * a - b * b;,将错误的变量名 asb 改为 a,并添加变量之间的乘号 *。 6. 修改 if(sgrt(a*a+b*b)==cei1(sgrt(a*a+b*b))if (sqrt(d) == ceil(sqrt(d))),将 sgrt 改为 sqrt,并添加函数名之间的左右括号 ()。 7. 修改 cout<<sgrt(a*a+b*b)<<endle;cout << sqrt(d) << endl;,将 sgrt 改为 sqrt,并添加括号之间的左右括号 () 和分号 ;。 8. 修改 elif(sgrt(d*d-e*e)==ceil(sqrt(d*d-e*e)))else if (sqrt(e) == ceil(sqrt(e))),将 sgrt 改为 sqrt,并添加函数名之间的左右括号 ()。 9. 修改 cout<<sgrt(d*d-e*e)<<endle;cout << sqrt(e) << endl;,将 sgrt 改为 sqrt,并添加括号之间的左右括号 () 和分号 ;。 10. 修改 e1seelse。 11. 添加头文件 #include<cmath>,用于调用数学函数。

    算法优化建议: 1. 代码中已经实现了较简单的勾股数求解算法,没有优化的空间。 2. 为了提高性能,可以在输入之前添加校验,如果输入的a和b不满足条件(例如a和b都大于0),则直接输出结果为-1。 3. 如果需要求解多个勾股数,可以使用循环进行输入和输出,避免重复执行程序。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 关于#python#的问题:如何通过pywinauto获取到图中“窗格”内部的内容
  • ¥15 visionMaster4.3.0 与QT 的二次开发异常
  • ¥50 关于#pcb工艺#的问题:这个设计电路中,最终组合起来起到了什么作用
  • ¥15 鼎捷t100或鼎捷E10生产模块与odoo17详细区别和鼎捷t100或鼎捷E10物料清单(BOM)可以在子级的子级在同一界面操作吗
  • ¥50 VS2019,xamarin框架串口调试报错Java.Lang.SecurityException: Exception of type
  • ¥20 QT如何判断QLineF线鼠标划过事件
  • ¥15 关于#phpstorm#的问题:phpstorm编辑工具 光标选中了就会自动复制到粘贴板上 这样我之前复制的内容就失效了
  • ¥15 pychram安装jupyter插件
  • ¥60 悬赏破解越狱iphone4s中360保险箱密码遗忘
  • ¥20 ARKts悬浮窗和快捷方式问题