1. 程式人生 > >求佩爾方程的解

求佩爾方程的解

求佩爾方程的解

  • Description
  • 求關於x y的二次不定方程的解 x2-ny2=1
  • Input
  • 多組輸入資料,先輸入組數T 然後輸入正整數n(n<=100)
  • Output
  • 對於每組資料輸出一行,求y<=10000的最小正整數解 ,輸出y的值,如果在此範圍內沒有解則輸出No
  • Sample Input
  • 1
  • 73
  • Sample Output
    -No
#include<stdio.h>
#include<math.h>
int main()
{
 int t,n;
 long i,j;	//對 int範圍懵
 int count;
 scanf("%d",&t);
 while(t--)
 {
  count=0;
  scanf("%d",&n);
  for(i=1;i<=10000;i++)
  {
   j=floor(sqrt(n*i*i+1)+0.5);	//+0.5確保前式有用
   if(j*j-n*i*i==1)
   {
    printf("%ld\n",i);
    count++;
    break;
   }
  }
  if(count==0)
   printf("No\n");
 } 
}