小白猿很烦恼 2022-01-10 00:58 采纳率: 53.8%
浏览 37
已结题

哪里写错了,我想不出不来。

本题要求对任意给定的正整数N,求方程X​X​​+Y​Y=N的全部正整数解。
输入格式:
输入在一行中给出正整数N(≤10000)。
输出格式:
输出方程X​X​​+Y​Y=N的全部正整数解,其中X≤Y

img


#include<stdio.h>

int main()
{
int x =1;
int y=1;
int n;
scanf("%d",&n);
int z=xx+yy;

while( y*y <= n){
     while( z <= n){
       if(z == n){
           printf("%d %d",x,y);
              }
    y++;
    }
    x++;
    y++;
}

return 0;

}

  • 写回答

2条回答 默认 最新

  • _GX_ 2022-01-10 06:03
    关注
    #include <iostream>
    #include <cmath>
    
    // 由下列关系
    // X*X + Y*Y = N
    // 1 <= X <= Y
    // 可以得出
    // 1 <= X <= sqrt(N/2)
    // X <= Y <= sqrt(N-1)
    int main()
    {
        int N;
        std::cin >> N;
        int m = (int)sqrt(N / 2);
        int n = (int)sqrt(N - 1);
        for (int X = 1; X <= m; X++)
        {
            for (int Y = X; Y <= n; Y++)
            {
                if (X * X + Y * Y == N)
                    std::cout << X << ' ' << Y << '\n';
            }
        }
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月10日
  • 修改了问题 1月10日
  • 修改了问题 1月10日
  • 修改了问题 1月10日
  • 展开全部