歐拉函數模板

一、單個歐拉函數計算

可評測鏈接: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(nlog2n)

下方代碼為求與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.pswp.cn/news/282532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282532.shtml
英文地址,請注明出處:http://en.pswp.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…