Ecuación de enumeración-Pell

Descripción del título:
Inserte la descripción de la imagen aquíIdea de algoritmo:
De acuerdo con x ^ 2-n y ^ 2 = 1, podemos obtener x = sqrt (1 + n y ^ 2), así que simplemente enumere y

Código de implementación:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;

int main(){
    
    
	int x=0,y=1,n,m;
	cin>>n;
	// 判断是否为非平方数
	m = (int)sqrt(n);
	if((m*m)==n){
    
    
		cout<<"n需为非平方数"<<endl;
		return 0;
	}
	while(1){
    
    
		int a = n*y*y;
		x = (int)sqrt(1+a);
		if(x>1000000000){
    
     	
			cout<<"  此算法不能解方程x^2-"<<n<<"*y^2=1"<<endl;
          	break;
		}
		if((x*x)==(a+1)){
    
    
			cout<<x<<' '<<y<<endl;
			break;
		}
		y++;
	}
	return 0;
} 

resultado de la operación:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_45666249/article/details/114702396
Recomendado
Clasificación