用c语言试编程输出方程2X^2+3Y^2=N 的全部正整数解,常数N从键盘输入。如果没有解,则输出No Solution

用c语言试编程输出方程2X^2+3Y^2=N 的全部正整数解,常数N从键盘输入。如果没有解,则输出No Solution

引用chatgpt:
以下是用C语言编写的程序,可以输出方程2X^2+3Y^2=N的全部正整数解,其中常数N从键盘输入。如果没有解,则输出“No Solution”。

#include<stdio.h>
#include<math.h>

int main()
{
    int n, x, y, flag = 0;
    scanf("%!d(MISSING)", &n);
    for (x = 1; x <= sqrt(n/2); x++) 
    {
        for (y = 1; y <= sqrt(n/3); y++) 
        {
            if (2*x*x + 3*y*y == n) 
            {
                printf("%!d(MISSING) %!d(MISSING)\n", x, y);
                flag = 1;
            }
        }
    }
    if (!flag)
        printf("No Solution\n");
    return 0;
}


该回答引用GPT:

#include <stdio.h>

int main()
{
    int N;
    int x, y;
    int flag = 0;
    scanf("%d", &N);
    for (x = 0; x * x <= N / 2; x++)
    {
        for (y = 0; y * y <= N / 3; y++)
        {
            if (2 * x * x + 3 * y * y == N)
            {
                printf("x=%d,y=%d\n", x, y);
                flag = 1;
            }
        }
    }
    if (flag == 0)
    {
        printf("No Solution\n");
    }
    return 0;
}

如还有疑问,可留言帮助解决。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 汉诺塔循环解法启蒙---C语言实现中的 假设 n=3 即有三个盘子: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    ONE: 塔尖移动:A->B->C->A->B (称为循环右移)

    stepsABC
    初始1/2/3/0/0/0
    1移动塔尖2/3/01/0/0
    2条件移动3/01/02/0
    3移动塔尖3/0/01/2/0
    4条件移动/03/01/2/0
    5移动塔尖1/03/02/0
    6条件移动1/02/3/0/0
    7移动塔尖/01/2/3/0/0

    TWO: 塔尖移动:A->C->B->A->C (称为循环左移)

    stepsABC
    初始1/2/3/0/0/0
    1移动塔尖2/3/0/01/0
    2条件移动3/02/01/0
    3移动塔尖3/01/2/0/0
    4条件移动/01/2/03/0
    5移动塔尖1/02/03/0
    6条件移动1/0/02/3/0
    7移动塔尖/001/2/3/0

    THREE: 塔尖移动:A->B->A->C->B->C->A->B

    stepsABC
    初始1/2/3/0/0/0
    1移动塔尖2/3/01/0/0
    2条件移动3/01/02/0
    3移动塔尖1/3/0/02/0
    4条件移动1/3/02/0/0
    5移动塔尖3/02/01/0
    6条件移动2/3/0/01/0
    7移动塔尖2/3/01/0/0
    8条件移动3/01/02/0
    9移动塔尖3/0/01/2/0
    10条件移动/03/01/2/0
    11移动塔尖1/03/02/0
    12条件移动1/02/3/0/0
    13移动塔尖/01/2/3/0/0

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^