给你一个数N,让你求出 这样的组合A,B,C,A,B,C要满足如下条件:A*A + B*B = C*C,A+B+C<=N

复制代码
代码
            int n = 100;
            Action
<intint, Action<int>> myfor = (start, end, callback) => {
                
for (int i = start; i < end; i++) {
                    callback(i);
                }
            };

            myfor(
1, n, (a) => myfor(1, n, (b) => myfor(1, n, (c) => {
                
if (a * a + b * b == c * c)
                    Console.WriteLine(
"a:{0},b:{1},c:{2},n:{3}", a, b, c, n);
            })));

            
for (int a = 1; a < n; a++) {
                
for (int b = 1; b < n; b++) {
                    
for (int c = 1; c < n; c++) {
                        
if (a * a + b * b == c * c)
                            Console.WriteLine(
"a:{0},b:{1},c:{2},n:{3}", a, b, c, n);
                    }
                }
            }

            var r 
= from a in Enumerable.Range(1, n)
                    from b 
in Enumerable.Range(a, n)
                    from c 
in Enumerable.Range(b, n)
                    
where a + b + c < n &&
                    a 
* a + b * b == c * c
                    select 
new { A = a, B = b, C = c };
            
foreach (var item in r) {
                Console.WriteLine(
"a:{0},b:{1},c:{2},n:{3}", item.A, item.B, item.C, n);
            }
复制代码

给你一个数N,让你求出 这样的组合A,B,C,A,B,C要满足如下条件:A*A + B*B = C*C,A+B+C<=N

最后一种方法的结果和前两种的结果不一样,不知道为啥。

posted @   蛙蛙王子  Views(846)  Comments(2Edit  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2008-04-22 蛙蛙推荐:设计一个可超时的阻塞方法
点击右上角即可分享
微信分享提示