数论一题(设m是一个小于2006的四位数....)


from http://www.qiujieda.com/exercise/math/905559
#include<bits/stdc++.h>
using namespace std;
bool Prime(int a){
if(a<=1)return false;
for(int i=2;i*i<=a;i++)
if(a%i==0)return false;
return true;
}
bool Square(int a){
int i;
//for(i=1;i*i<a;i++);
i=int(sqrt(a));
return i*i==a;
}
int main(){
int c=0;
printf(" m n m-n m*n\n");
printf("----------------------------\n");
for(int m=1000;m<=9999;m++)
for(int n=1;n<=m-2;n++)
if(Prime(m-n) && Square(m*n)){
printf("%5d%6d%6d%10d%5d\n",m,n,m-n,m*n,__gcd(m,n));
c++;
}
printf("----------------------------\n");
printf("共%d个\n",c);
return 0;
}


浙公网安备 33010602011771号