POJ - 3090 Visible Lattice Points(欧拉函数)

POJ - 3090 Visible Lattice Points

分 析 这 道 题 目 , 我 们 发 现 除 了 ( 1 , 0 ) , ( 0 , 1 ) , ( 1 , 1 ) 三 个 钉 子 , 其 他 钉 子 被 看 到 , 只 有 满 足 了 分析这道题目,我们发现除了(1,0),(0,1),(1,1)三个钉子,其他钉子被看到,只有满足了 ,(1,0),(0,1),(1,1),,
1 ≤ x , y ≤ N , x ≠ y 1 ≤ x , y ≤ N , x ≠ y 而 且 g c d ( x , y ) = 1 1≤x,y≤N,x≠y1≤x,y≤N,x≠y 而且gcd(x,y)=1 1x,yN,x=y1x,yN,x=ygcd(x,y)=1

然 后 我 们 再 次 发 现 , 能 够 看 到 的 钉 子 , 是 沿 着 然后我们再次发现,能够看到的钉子,是沿着 ,,沿(0,0)(n,n) 这 条 直 线 对 称 的 , 所 以 我 们 只 要 考 虑 其 中 一 半 就 好 了 , 然 后 最 后 乘 以 2 即 可 . 这条直线对称的,所以我们只要考虑其中一半就好了,然后最后乘以2即可. 线,,2.

然 后 满 足 上 述 性 质 的 钉 子 , x 的 数 量 恰 好 就 是 φ ( y ) 然后满足上述性质的钉子,x的数量恰好就是φ(y) ,xφ(y)
有 了 性 质 的 数 学 题 目 是 什 么 , 就 是 直 接 套 公 式 ∑ i = 2 N φ ( i ) 有了性质的数学题目是什么,就是直接套公式\sum_{i=2}^{N}φ(i) ,i=2Nφ(i)
利 用 E r a t o s h e n e s 筛 法 , 利用Eratoshenes筛法, Eratoshenes 我 们 可 以 在 O ( N l o g N ) 的 时 间 内 求 出 2   N 中 每 个 数 的 欧 拉 函 数 我们可以在O(NlogN)的时间内求出2~N中每个数的欧拉函数 ONlogN2 N

#include<iostream>
using namespace std;

typedef long long LL;
const int N = 1010;
int phi[N];

void get_eulers(int n)
{
	for(int i=2;i<=n;i++) phi[i]=i;
	for(int i=2;i<=n;i++)
		if(phi[i]==i)
			for(int j=i;j<=n;j+=i)
				phi[j]=phi[j]/i*(i-1);
}

int main()
{
	get_eulers(N-1);
	
	int T,n;
	cin>>T;
	for(int t=1;t<=T;t++)
	{
		cin>>n;
		int res=3;
		for(int i=2;i<=n;i++) res+=phi[i]*2;
		cout<<T<<" "<<n<<" "<<res<<endl; 
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wa_Automata

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值