枚举—佩尔方程

题目描述:
在这里插入图片描述算法思想:
根据x^2 - ny^2=1可以得出x=sqrt(1+ny^2),所以只需枚举y即可

实现代码:

#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;
} 

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45666249/article/details/114702396