欧拉函数模板

一、单个欧拉函数计算

可评测链接:http://codevs.cn/problem/4939/

单个欧拉函数计算公式:φ(n)=n*(1-1/p1)*(1-1/p2)*……*(1-1/pn)

Step 1:

一边分解质因数一边算,时间复杂度O(n)

#include<cstdio>
using namespace std;
long long n,ans;
int main()
{while(1){scanf("%lld",&n);if(!n) break;ans=n;for(long long i=2;i<=n;i++)if(n%i==0){while(n%i==0) n/=i;ans=ans/i*(i-1);}printf("%lld\n",ans);}
}

Step 2 :

性质:合数至少有一个不大于不大于根号n的素因子

所以循环只需循环到根号n即可 时间复杂度 O(根号n)

#include<cstdio>
using namespace std;
long long n,ans;
int main()
{while(1){scanf("%lld",&n);if(!n) break;ans=n;for(long long i=2;i*i<=n;i++)if(n%i==0){while(n%i==0) n/=i;ans=ans/i*(i-1);}if(n>1) ans=ans/n*(n-1);printf("%lld\n",ans);}
}

Step 3:

素数除了2之外都是奇数,

所以单独处理2,然后之枚举根号n以内的奇数

时间复杂度 O[(根号n)/2]

#include<cstdio>
using namespace std;
int main()
{long long n,ans;while(1){scanf("%lld",&n);if(!n) return 0;ans=n;if(n%2==0){while(n%2==0) n/=2;ans=ans/2;}for(long long i=3;i*i<=n;i+=2)if(n%i==0){while(n%i==0) n/=i;ans=ans/i*(i-1);}if(n>1) ans=ans/n*(n-1);printf("%lld\n",ans);}
}

 

二、欧拉筛

欧拉筛可以快速求[1,n]内所有数的欧拉函数,所以在涉及欧拉函数求和时会使用

 利用性质:

如果i%p==0,那么φ(i*p)=φ(i)*p

如果i%p!=0,那么 φ(i*p)=φ(i)*(p-1)   其中p为质数

代码为求2——n的欧拉函数之和

评测链接:http://poj.org/problem?id=2478

时间复杂度:O(n)

#include<cstdio>
#define N 1000001 
using namespace std;
bool check[N];
int prime[N],cnt,phi[N],a;
long long sum[N];
void euler()
{phi[1]=1;for(int i=2;i<=N;i++){if(!check[i]){prime[++cnt]=i;phi[i]=i-1;}for(int j=1;j<=cnt;j++){if(i*prime[j]>N) break;check[i*prime[j]]=true;if(i%prime[j]==0){phi[i*prime[j]]=phi[i]*prime[j];break;}phi[i*prime[j]]=phi[i]*(prime[j]-1);}}
}
int main()
{euler();for(int i=1;i<=N;i++) sum[i]+=sum[i-1]+1ll*phi[i];while(1){scanf("%d",&a);if(!a) return 0;printf("%lld\n",sum[a]-1);}
}

 

三、埃氏筛法

埃氏筛法可以O(1)查询i是否与n互质,在涉及 查询与n互质的数是什么 时 会使用

时间复杂度:O(nlog²n)

下方代码为求与n互质的第k个数

评测链接:http://poj.org/problem?id=2773

#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
bool check[1000001];
int euler(int n)//埃氏筛法模板 
{int m=int(sqrt(n+0.5));int ans=n,k=n;memset(check,0,sizeof(check));for(int i=2;i<=m;i++)if(n%i==0){ans=ans/i*(i-1);for(int j=1;i*j<=k;j++)check[i*j]=true;while(n%i==0) n/=i;}if(n>1){ans=ans/n*(n-1);for(int j=1;n*j<=k;j++) check[n*j]=true;}return ans;
}
int main()
{int m,k,ans,cnt,t,i;while(scanf("%d%d",&m,&k)!=EOF){ans=euler(m);cnt=0;if(k%ans==0) t=k/ans-1;else t=k/ans;k=k-ans*t;for(i=1;i<=m;i++){if(!check[i]) cnt++;if(cnt==k) break;}printf("%d\n",i+m*t);}
}

 

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6598367.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷P1145 约瑟夫

题目描述 n个人站成一圈&#xff0c;从某个人开始数数&#xff0c;每次数到m的人就被杀掉&#xff0c;然后下一个人重新开始数&#xff0c;直到最后只剩一个人。现在有一圈人&#xff0c;k个好人站在一起&#xff0c;k个坏人站在一起。从第一个好人开始数数。你要确定一个最小的…

.NET 反向代理-YARP

什么是 YARPYARP (另一个反向代理) 设计为一个库&#xff0c;提供核心代理功能&#xff0c;你可以根据应用程序的特定需求进行自定义。YARP 是使用 .NET的基础架构构建在 .NET上的。YARP 的主要不同之处在于&#xff0c;它被设计成可以通过 .NET 代码轻松定制和调整&#xff0c…

JavaScript 开发的45个经典技巧

2019独角兽企业重金招聘Python工程师标准>>> 前言&#xff1a;此篇译文在各网站均有标注原创的声明&#xff0c;译者名字已不可考&#xff0c;暂为佚名 JavaScript是一个绝冠全球的编程语言&#xff0c;可用于Web开发、移动应用开发&#xff08;PhoneGap、Appcelera…

PHP循环输出二维数组

目的: 将二维数组中的每一个元素输出 首先定义一个二维数组 //定义数组 $arr array(array(北京,上海,深圳,广州),array(黑龙江,吉林,辽宁,江苏) ); 一 for循环输出 1.1 直接输出 //for循环遍历数组 for($i 0; $i < count($arr); $i) {for($j 0; $j < count($arr[…

回归远程 - 云原生IDE是IaC从表象触达本质的必然选择 | SmartIDE

作者&#xff1a;徐磊&#xff0c;开源云原生SmartIDE创始人、LEANOSFT创始人/首席架构师/CEO&#xff0c;微软最有价值专家MVP/微软区域技术总监Regional Director&#xff0c;华为云最有价值专家。从事软件工程咨询服务超过15年时间&#xff0c;为超过200家不同类型的企业提供…

android获取手机机型、厂商、deviceID基本信息

/*** 系统工具类*/ public class SystemUtil {/*** 获取当前手机系统语言。** return 返回当前系统语言。例如&#xff1a;当前设置的是“中文-中国”&#xff0c;则返回“zh-CN”*/public static String getSystemLanguage() {return Locale.getDefault().getLanguage();}/***…

题目1362:左旋转字符串(Move!Move!!Move!!!)

题目1362&#xff1a;左旋转字符串&#xff08;Move!Move!!Move!!!&#xff09; 时间限制&#xff1a;2 秒 内存限制&#xff1a;32 兆 特殊判题&#xff1a;否 提交&#xff1a;2306 解决&#xff1a;961 题目描述&#xff1a;汇编语言中有一种移位指令叫做循环左移&#xff0…

PHP简单实现递归

//递归 //斐波那契数列 function digui($n) {if($n > 2) {$arr[$n] digui($n-1) digui($n-2);return $arr[$n];} else {return 1;} }//使用 echo digui(5); 总结 : 首先应该想到出口是什么,将出口放在else条件里 例如,本例斐波那契数列中,出口是前两个数是1,也就是数组下…

(三)Controller接口控制器详解(二)

一、AbstractController&#xff08;简单控制器&#xff09; AbstractController使用方法&#xff1a; 首先让我们使用AbstractController来重写第二章的HelloWorldController&#xff1a; public class HelloWorldController extends AbstractController {Overrideprotected M…

[BZOJ]1095 Hide捉迷藏(ZJOI2007)

一道神题&#xff0c;两种神做法。 Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻&#xff0c;并且他们有很多孩子。某天&#xff0c;Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特&#xff0c;由N个屋子和N-1条双向走廊组成&#xff0c;这N-1条走…

Spring4-自动装配Beans-通过注解@Autowired在构造方法上

1.创建Maven项目,项目名称springdemo19,如图所示2.配置Maven,修改项目中的pom.xml文件,修改内容如下<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://mave…

15个开源的工业软件

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)不同的工业流程&#xff0c;需要不同的工业软件。此前&#xff0c;我们已经介绍了面向研发设计环节的开源软件&#xff08;详情查看&#xff1a;20 个开源的工业设计软件&#xff09;&#xff0c;今天就来介绍一下面向…

PHP开发中保证接口安全

模拟客户端请求:<?php namespace Home\Controller; use Think\Controller;class ClientController extends Controller{const TOKEN API;//模拟前台请求服务器api接口public function getDataFromServer(){//时间戳$timeStamp time();//随机字符串$randomStr $this ->…

MySQL远程访问报错解决

2019独角兽企业重金招聘Python工程师标准>>> 我之前的一篇博客讲了MySQL配置远程访问的方法&#xff0c;但是可能配置了账户以后还是不能访问&#xff0c;这可能是防火墙的原因&#xff0c;在CentOS里&#xff0c;我们修改一下防火墙设置就可以了 1. 进入防火墙配置…

jssdk.php

/*** Created by PhpStorm.* Date: 17/8/19* Time: 下午2:24*/ class JSSDK {private $appId;private $appSecret;public function __construct($appId, $appSecret) {$this->appId $appId;$this->appSecret $appSecret;}public function getSignPackage() {$jsapiTick…

GNU/Linux与开源文化的那些人和事

一、计算机的发明 世上本无路&#xff0c;走的人多了&#xff0c;就有了路。世上本无计算机&#xff0c;琢磨的人多了……没有计算机&#xff0c;一切无从谈起。 三个人对计算机的发明功不可没&#xff0c;居功至伟。阿兰图灵&#xff08;Alan Mathison Turing&#xff09;、阿…

PHP使用PHPMailer发送邮件

1. 首先下载phpmailer插件,并将插件复制到目录下 下载地址: http://download.csdn.net/download/m_nanle_xiaobudiu/10261269 2. home/view/user/mail_chck.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

python学习记录2

一、两个模块&#xff08;sys和os&#xff09; 1 #!/usr/bin/env python2 # _*_ coding: UTF-8 _*_3 # Author:taoke4 import sys5 print(sys.path)#打印环境变量6 print(sys.argv[0])#当前文件相对路径,sys.argv是一个列表&#xff0c;第一个元素为程序本身的相对路径&#xf…

cordova-config.xml配置应用图标

1. <icon src"res/icon/ios/browser.png"/> 2.规格&#xff1a; iphone平台一般要求3种规格的图片&#xff1a;1x、2x、3x&#xff0c;也是就Icon.png、Icon2x.png、Icon3x.png. 注意&#xff1a;iOS所有图标的圆角效果由系统生成&#xff0c;给到的图标本身不…

将 Figma 设计转换为 .NET MAUI Graphics 代码

原文链接&#xff1a;https://github.com/jsuarezruiz/figma-to-maui-graphics原文作者&#xff1a;jsuarezruiz翻译&#xff1a;沙漠尽头的狼(谷歌翻译加持)&#xff0c;翻译别扭&#xff0c;建议直接阅读原文使用FigmaSharp.Maui.Graphics将Figma设计转换为 .NET MAUI Graphi…