前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >欧拉函数(欧拉筛)--模板

欧拉函数(欧拉筛)--模板

作者头像
用户2965768
发布2018-08-30 15:27:23
3960
发布2018-08-30 15:27:23
举报
文章被收录于专栏:wymwym
代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;

typedef long long llong;
const int MAXN = 25000000 + 10;

llong phi[MAXN + 200];
llong prime[MAXN + 200];
bool book[MAXN + 200];

void phi_prime (int n)
{
	int i, j;
	
	memset (book, true, sizeof(book));
	prime[0] = 0;
	book[0] = false, book [1] = false;
	phi[1] = 1;
	for (i = 2; i <= n; i++)
	{
		if (book[i])
		{
			prime[++prime[0]] = i;
			phi[i] = i - 1;
		}
		for (j = 1; j <= prime[0] && i * prime[j] <= n; j++)
		{
			book[i * prime[j]] = false;
			if (i % prime[j] == 0)
			{
				phi[i * prime[j]] = phi[i] * prime[j];
				break;
			}
			else
			{
				phi[i * prime[j]] = phi[i] * (prime[j] - 1);
			}
		}
	}
}

int main()
{
    int i, n, t;
    
    phi_prime(MAXN - 5);
    while(1)
    {
    	scanf("%d",&n);
    	printf("%d\n",phi[n]);
	}
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档