数论一题(设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;
}

  

posted @ 2017-12-25 13:51  codeisking  阅读(150)  评论(0)    收藏  举报