hdu 1286 (欧拉函数)

hdu 1286 (欧拉函数)

对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。

此题题意正是求这个函数

 

         φ函数的值 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,

  
adee30dd80a43c938d102997.jpg

Euler函数

         x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。 (注意:每种质因数只一个。比如12=2*2*3

     那么φ(12)=12*(1-1/2)*(1-1/3)=4)

     若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。

     欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n)。

     特殊性质:当n为奇数时,φ(2n)=φ(n), 证明于上述类似。

http://baike.baidu.com/view/107769.htm#sub107769

自己写的186MS,欧拉函数写的15MS,但是还有cow 0MS过的,YM……

 

ContractedBlock.gif
ExpandedBlockStart.gif
AC代码


#include
<
iostream
>

#include

<
cmath
>

#include

<
cstring
>


using

namespace
std;


int
main()
{


int
i,n,m,cas,num;

int
yue[
1000
];
scanf(


%d

,
&
cas);

while
(cas

)
{

scanf(


%d

,
&
n);
num

=
0
;
m

=
n;

for
(i
=
2
;i
<=
sqrt((
double
)m);i
++
)
{


if
(m
%
i
==
0
)
{

yue[num

++
]
=
i;
m

/=
i;
}

while
(m
%
i
==
0
)
{

m

/=
i;
}
}

if
(m
!=
1
){

yue[num

++
]
=
m;
}

double
b
=
double
(n);

for
(i
=
0
;i
<
num;i
++
)
{

b

*=
(
1

1.0
/
(
double
)yue[i]);
}
cout

<<
int
(b)
<<
endl;

}

return

0
;
}

 

转载于:https://www.cnblogs.com/cykun/archive/2011/04/18/2020288.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110632.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【剑指Offer学习】【面试题19 :二叉树的镜像】[通俗易懂]

    【剑指Offer学习】【面试题19 :二叉树的镜像】

    2022年2月3日
    47
  • python破解wifi(暴力破解wf)

    自己家的网路实在是差劲的一批…然后电脑打开WiFi,发现了有及格信号还蛮不错的WiFi,于是…就开始了愉快的Python之旅~~~主要步骤获取第一个无线网卡断开断开所有的wifi读取密码本设置睡眠时间fromtkinterimport*frompywifiimportconstimportpywifiimporttime#主要步骤:#1、获取第一个无线网卡#2、断开所有的wifi#3、读取密码本#4、设置睡眠时间#测试连接defwi

    2022年4月12日
    379
  • idea 激活码 lom【在线注册码/序列号/破解码】

    idea 激活码 lom【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    129
  • scipy.interpolate.interp1d()函数详解

    scipy.interpolate.interp1d()函数详解插值模块scipy.interpolate是插值模块,插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。与拟合不同的是,要求曲线通过所有的已知数据。计算插值有两种基本的方法:对一个完整的数据集去拟合一个函数;仿样内插法:对数据集的不同部分拟合出不同的函数,而函数之间的曲线平滑对接。SciPy的interpolate模块提供了许多对数…

    2022年6月9日
    198
  • python创建数组的方法_python数组和列表

    python创建数组的方法_python数组和列表另见数组创建相关API简介创建数组有5种常规机制:从其他Python结构(例如,列表,元组)转换numpy原生数组的创建(例如,arange、ones、zeros等)从磁盘读取数组,无论是标准格式还是自定义格式通过使用字符串或缓冲区从原始字节创建数组使用特殊库函数(例如,random)本节不包括复制,连接或以其他方式扩展或改变现有数组的方法。它也不会涵盖创建对象数组或结构化数组。这些都包含在他们自己的章节中。将Pythonarray_like对象转换为Numpy数组通常,在Pytho

    2025年6月21日
    1
  • python win32api.shellexecute_socket send函数

    python win32api.shellexecute_socket send函数记事本的主窗口中还有一个窗口,您需要向它发送消息。您可以使用MicrosoftSpy++工具查看此“隐藏”窗口,也可以获取所有子窗口,如下所示:defcallback(hwnd,hwnds):ifwin32gui.IsWindowVisible(hwnd)andwin32gui.IsWindowEnabled(hwnd):hwnds[win32gui.GetClassName(hwnd…

    2022年10月11日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号