题目描述:
算法思想:
根据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;
}
运行结果: