POJ 1305 勾股数组
  QLtA9LK6PyNk 2023年11月02日 51 0


数论上的一个定理

#include<cstdio>
#include<cstring>
using namespace std;
bool vis[1000010];
int gcd(int a,int b){
	return b==0?a:gcd(b,a%b);
}
int main(){
	int n,i,j,k;
	while(scanf("%d",&n)==1){
		memset(vis,0,sizeof(vis));
		int sum=0;
		for(i=1;i<=n;i+=2)
			for(j=i+2;j<=n;j+=2){
				if(gcd(i,j)>1)continue;
				int a=i*j;
				int b=(j*j-i*i)/2;
				int c=(j*j+i*i)/2;
				if(c>n)break;
				sum++;
				for(k=1;k<=n/c;k++)
					vis[a*k]=vis[b*k]=vis[c*k]=1;
			}
		int ans=0;
		for(i=1;i<=n;i++)
			if(vis[i]==0)
				ans++;
		printf("%d %d\n",sum,ans);
	}
}






【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: HDU 2242 下一篇: hdu 4389
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
QLtA9LK6PyNk
作者其他文章 更多

2023-11-02

2023-11-02

2023-11-02

2023-11-02

2023-11-02

2023-11-02

2023-11-02

2023-11-02