zoukankan      html  css  js  c++  java
  • hdu 1286 找新朋友(欧拉函数)

    解决一些数学问题时,能简化公式会省很多事~

    一看这题的数据就知道有暴力会超,然后上网看了一下别人的思路,是用的欧拉公式,刚开始没弄懂,不敢写,看了书上写的推出的公式,很简单,但推理过程不甚明白,以后慢慢研究,先学会用欧拉公式吧。

    欧拉φ函数:phi(n)是所有小于n的正整数里,和n互素的整数的个数。n是一个正整数。

    设n=a1^x1*a2^x2*a3^x3.....*an^xn,那么n的欧拉函数就是:phi(n)=a1^(x1-1)*(a1-1)*a2^(x2-1)*(a2-1)*......an^(xn-1)*(an-1);

    整理可得:phi(n)=n*(a1-1)*(a2-1)*.......(an-1)/(a1*a2*a3*.....an);

    代码:

     1 #include<stdio.h>
    2 #include<stdlib.h>
    3 #include<string.h>
    4 int cal(int n)
    5 {
    6 int tem=n;
    7 for(int i=2;i*i<=n;i++)
    8 if(n%i==0)
    9 {
    10 while(!(n%i))n=n/i;
    11 tem=tem/i*(i-1);
    12 }
    13 if(n!=1)tem=tem/n*(n-1);
    14 return tem;
    15 }
    16 int main()
    17 {
    18 int t,n;
    19 scanf("%d",&t);
    20 while(t--)
    21 {
    22 scanf("%d",&n);
    23 printf("%d\n",cal(n));
    24 }
    25 return 0;
    26 }



  • 相关阅读:
    vue 按需加载
    需要打印真实尺寸大小等需求的,css的单位可以使用mm等做单位
    d3 比例尺
    d3 根据数据绘制svg
    d3 svg简单学习
    d3 使用随机数据生成条形图
    d3 画简单的柱形图
    d3 使用数据
    d3 数据绑定
    d3 添加元素相关api
  • 原文地址:https://www.cnblogs.com/misty1/p/2297875.html
Copyright © 2011-2022 走看看