UVA 106(费马定理&毕达哥拉斯定理)

来源:互联网 发布:施慧达待遇知乎 编辑:程序博客网 时间:2024/05/18 12:03

#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>#define M 1000010using namespace std;int gcd(int a,int b){    if(b==0)return a;    return gcd(b,a%b);}bool flag[M];int main(){    int N,x,y,z;    while(scanf("%d",&N)==1)    {        memset(flag,false,sizeof(flag));        int count1=0,count2=0;        for(int m=1; m<=(int)sqrt(N); m++)            for(int n=m+1; n<=(int)sqrt(N);n+=2)            {                if(gcd(m,n)==1)                {                    x=n*n-m*m;                    y=2*m*n;                    z=n*n+m*m;                    if(z>N)break;                    count1++;                    for(int i=1; z*i<=N; i++)                    {                        flag[i*x]=true;flag[i*y]=true;flag[i*z]=true;                    }                }            }        for(int i=1; i<=N; i++)            if(!flag[i])                count2++;        printf("%d %d\n",count1,count2);    }    return 0;}

0 0
原创粉丝点击