首页 > 其他分享 >求欧拉函数

求欧拉函数

时间:2023-09-29 16:45:09浏览次数:35  
标签:phi return 函数 int res long 欧拉

筛法+试除
推荐视频:筛法求欧拉函数

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 1e8 + 10;
int p[N], cnt,phi[N];
bool vis[N];
void get_phi(int n) {//线性筛
	phi[1] = 1;
	for (int i = 2; i * i <= n; i++) {
		if (!vis[i]) {
			p[++cnt] = i;
			phi[i] = i - 1;
		}
		for (int j = 1; 1LL * i * p[j]; j++) {
			int m = i * p[j];
			vis[m]=1;
			if (i % p[j] == 0) {
				phi[m] = p[j] * phi[i];
				break;
			}
			else {
				phi[m] = (p[j] - 1) * phi[i];
			}
		}
	}

}
//根据欧拉函数性质,只与质因子数量有关,与其次数无关
int phi_(int n) {//试除法
	int res = n;
	for (int i = 2; i * i <= n; i++) {
		if (n % i == 0) {
			res = res / i * (i - 1);
		}
		while (n % i == 0) n /= i;
	}
	if (n > 1) res = res / n * (n - 1);
	return res;
}
int main() {
	int n;
	cin >> n;
	phi_(n);
	get_phi(n);
	return 0;
}

标签:phi,return,函数,int,res,long,欧拉
From: https://www.cnblogs.com/bu-fan/p/17737093.html

相关文章

  • qsort函数
    (目录)1.什么是qsort函数我们以前学习过的一些排序算法,如冒泡、希尔、快排等等,它们速度有快有满,但是这些排序都只能排序一种类型的变量,如果想排序另一种变量就需要另写一个排序,那么有没有什么排序是“万能的”呢,什么类型数据都能排的呢?答案就是qsort函数qsort函数实现了一种......
  • 【代码片段】makefile 中通过 shell 函数执行 sed
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯先上代码:(在macos上调试通过)#defineashellfunctiontosetdebugmodetoreleasemode#whenosismacbook,usegsedasseddefinefunction_sed_set_rel......
  • 前端 toFixed()函数
    toFixed()函数:可把Number四舍五入为指定小数位数的数字。toFixed()中的参数就是需要取的小数位数,0表示不留小数点VarNumber=3.1415926Number.toFixed(2);//输出3.14Number.toFixed(0);//输出3VarNumber=18.888;Number.toFixed(0);//输出19......
  • python基础:函数和参数
    一函数1函数的文档字符串函数内的第一条语句是字符串时,该字符串就是文档字符串,用于对函数进行说明利用文档字符串可以自动生成在线文档或打印版文档,建议在工作中习惯加入文档字符串,否则时间一长,自己可能都不知道函数是干嘛,更不用说其他人了如上,利用__doc__属性,可以输出函数......
  • Numba 库中的一个装饰器函数numba.jit
    numba.jit 是Numba库中的一个装饰器函数,用于实现即时编译(Just-In-TimeCompilation)的功能。它可以将Python函数转换为高性能的机器码,从而提供更快的执行速度。使用 numba.jit 装饰器可以将普通的Python函数转换为被Numba优化的函数。当使用 numba.jit 装饰器修饰一......
  • OI 超几何函数入门
    第一章定义超几何函数\[F(a_1,a_2\dotsa_n;b_1,b_2\dotsb_m;z)=\sum_{k\ge0}\frac{a_1^{\overline{k}}\dotsa_n^{\overline{k}}z^k}{b_1^{\overlinek}\dotsb_n^{\overlinek}k!}\]其中\(b_i\)不为非正的整数。举出若干简单例子:\[F(1;1;z)=e^z,F(1,1;1;z)=\frac{1}{1......
  • 无涯教程-JavaScript - CONCATENATE函数
    描述CONCATENATE函数将两个或多个文本字符串连接为一个字符串。在Excel2016中,CONCATENATE函数已被CONCAT函数替换。CONCATENATE函数仍可用于向后兼容。语法CONCATENATE(text1,[text2]...)争论Argument描述Required/Optionaltext1Thefirstitemtojoin.Theit......
  • 无涯教程-JavaScript - CONCAT函数
    描述Combinesthetextfrommultiplerangesand/orstrings,butitdoesn'tprovidethedelimiterorIgnoreEmptyarguments.Toincludedelimiters(suchasspacingorampersands(&)betweenthetextsyouwanttocombineandtoremoveemptyarguments......
  • 函数分类与使用
    函数:函数头和函数体。可以带参数,可以返回值。1.函数分类带参函数和无参函数;有返回值函数和无返回值函数;数值函数、日期与时间函数、逻辑函数、字符串函数、存储空间分配函数、文件函数、输入与输出函数等;系统函数和用户函数。2.系统函数和用户函数系统函数由C语言......
  • 标准输出函数printf()的使用
    1.printf()函数的来历和作用printf()函数是系统函数,标准输出函数,向显示器屏幕窗口输出数据。需要在程序文件的开始使用#include包含命令,包含stdio.h。2.printf()函数格式函数原型声明语句格式(包含在stdio.h头文件中):intprintf(<字符指针参数>,<形式参数表>);函数调用格式(......