存在互素正整数 m,n,(m < n) 且一个是偶数,一个是奇数。满足:
x=m^2-n^2;
y=2*m*n;
z=m*m+n*n;
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int maxn=1000000;
bool flag[maxn];
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
void solve(int t)
{
int n,m,x,y,z;
int ans1=0,ans2=0;
memset(flag,0,sizeof(flag));
int tmp=sqrt(t*1.0);
for(n=1;n<=tmp;n++){
for(m=n+1;m<=tmp;m++){
if(m*m+n*n>t)
break;
if(m%2!=n%2){
if(gcd(m,n)==1){
x=m*m-n*n;
y=2*m*n;
z=m*m+n*n;
ans1++;
for(int i=1;;i++){
if(i*z>t) break;
flag[i*x]=1;
flag[i*y]=1;
flag[i*z]=1;
}
}
}
}
}
for(int i=1;i<=t;i++){
if(!flag[i])
ans2++;
}cout<<ans1<<" "<<ans2<<endl;
}
int main()
{
int n;
while(cin>>n)
solve(n);
return 0;
}