欧拉函数(C语言实现)
欧拉函数(Euler's totient function)是指小于n的正整数中与n互质的数的数目,用φ(n)表示。特别的,φ(1)=1;
例如:φ(10)=4;1 3 7 9与10互质。
公式:φ(n)=n*(1-1/p(1))*(1-1/p(2))*(1-1/p(3))*...*(1-1/p(n)),其中p(1),p(2),p(3)...p(n)为n的所有质因数,每个质因数只能出现一次。
例如:φ(8)=8*(1-1/2)=4;1 3 5 7与8互质
φ(10)=10*(1-1/2)*(1-1/5)=4;1 3 7 9与10互质
性质:
1.若n为质数,则φ(n)=n-1;(注意1非素数也非合数)例如φ(7)=7-1=6;1 2 3 4 5 6(除7外)均与7互质
2.若p为质数,n=p^k,则φ(n)=p^k-p^(k-1)=(p-1)*(p^(k-1)); 例如φ(9)=φ(3^2)=3^2-3^1=(3-1)*(3^(2-1))=6;1 2 4 5 7 8均与9互质
3.若m,n互质,则φ(m*n)=φ(m)*φ(n)=(m-1)*(n-1);
引申:φ(2*n)=φ(2)*φ(n)=(2-1)*φ(n)=φ(n);
欧拉定理:
若a,n为正整数且a,n互质,则a^φ(n) ≡ 1 (mod n)
费马小定理:
若p为素数且a,p互质,则a^(p-1) ≡ 1 (mod p)
友情链接:
https://baike.baidu.com/item/MOD运算/7885553#4
下面放代码:
#include<stdio.h>
#include<math.h>
int eular(int n)
{
int res=n;
for(int i=;i<=sqrt(n);i++)//判断n是否为质数
{
if(n%i==)res=res/i*(i-);//res=res*(1-1/i)先进行除法防止溢出
while(n%i==)n/=i;
}
if(n>)res=res/n*(n-);
return res;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",eular(n));
return ;
}
谢谢观看,如有问题欢迎提出并指正。
欧拉函数(C语言实现)的更多相关文章
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- 转载:Candy? 在线性时间内求出素数与欧拉函数
转载自:http://www.cnblogs.com/candy99/p/6200660.html 2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB ...
- 牛客小白月赛12 D 月月给华华出题 (欧拉函数,数论,线筛)
链接:https://ac.nowcoder.com/acm/contest/392/D 来源:牛客网 月月给华华出题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K, ...
- hdu2588 GCD (欧拉函数)
GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数. (文末有题) 知 ...
- BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2553 Solved: 1565[Submit][ ...
- COGS2531. [HZOI 2016]函数的美 打表+欧拉函数
题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...
- poj2478 Farey Sequence (欧拉函数)
Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...
- 51Nod-1136 欧拉函数
51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...
- 欧拉函数 - HDU1286
欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数.欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1.令p为一个素数,n = p ^ k,则 ...
随机推荐
- 工具类静态方法注入dao
工具类里的一个静态方法需要调用dao查询数据库,用普通的spring注解注入一直报空指针异常,不能找到这个dao.参考的http://busing.iteye.com/blog/899322 的文章解 ...
- [leetcode]48. Rotate Image旋转图像
You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...
- jsp相关笔记(三)
在往数据库的表中写入数据时,一定要与表中的每一项对应,比如表中有三项,则写入的值也应该是三类: String getTitle=request.getParameter("title&quo ...
- GUI学习之一——PyQt5初识
我们在第〇篇里先演示了GUI的功能,其实Python有多个库是支持GUI编程的,python官网列出了大量的说明,其中包括了原生的tkinter 还有许多第三方库 Pyqt PySide wxPyth ...
- ORA-12514: TNS:监听程序当前无法识别连接描述符中请
若Oracle出现“监听程序当前无法识别连接描述符中请求的服务”这个错误可以按照以下方法解决: 可以通过这个路径找到一个文本文件: oracle\product\10.2.0\db_1\NETWORK ...
- python_day12_html
目录: 简单web的服务器代码 html简介 html常用标签 一.简单web的服务器代码 1.简单python服务器代码: import socket def main(): sock = sock ...
- 1.3eigen中数组类和系数的运算
1.3数组类和系数的运算 与矩阵类只适用与线性代数运算相反,数组类提供通用的数组类,能不利用线性代数的知识来对系数进行操作,比如对每个系数加上一个常数,或者乘上两个数组的系数. 1.数组类型 跟矩阵类 ...
- tensorflow学习之(六)使用tensorboard展示神经网络的graph
# 创建神经网络, 使用tensorboard 展示graph import tensorflow as tf import numpy as np import matplotlib.pyplot ...
- P1613 跑路(倍增 + floyd)
https://www.luogu.org/problemnew/show/P1613 思路: 1.读入 2.建图 3.对于每一个点,向距离它 2^k 长度的点连一条长度为 1 的边 4.在新图上跑1 ...
- BeanUtil拷贝
拷贝vo对象 一些查询到的数据很多是不需要的,可以创建vo对象,对需要的对象属性进行拷贝 maven依赖 <dependency> <groupId>org.projectlo ...