zoukankan      html  css  js  c++  java
  • XidianOJ 1098 突击数论前的xry111

    题目描述

    xry111发现自己的数论知识不太行,于是准备回顾一下以前学过的数论知识后开始学习高深数论以便解决暗黑数学题。回顾过程中,xry111发现欧拉函数挺有用的(欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n)),xry111刚学欧拉函数时每次求φ(n)时总是习惯从1枚举到n-1,然后依次判断其是否合法。所以对于某些比较大的数,当年的xry111常常数数数到头晕。但是现在作为一个可以讲课可以写题解的xry111来说,他想知道某个数的欧拉值已经不必再一个一个的数啦,因为他可以机智的让你帮忙:对于一个数n,你得告诉xry111其欧拉值φ(n)是多少。

    输入

    多组数据(数据组数大约10^5组),请处理到文件结束,每组数据一行n(1<=n<=10^5)。

    输出

    每组数据输出一行对应的φ(n)值。

    --正文

    直接预处理就好。。

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    #include <algorithm>
    using namespace std;
    #define SIZE 100001
    int euler(int n){
        int res = 1; int i;
        for (i=2;i*i<=n;i++){
            if (n % i == 0){
                n /= i;
                res *= i-1;
                while (n % i == 0){
                    n /= i; res*= i;
                }
            }
        }
        if (n > 1) res*= n-1;
        return res;
    } 
    
    int e[SIZE+1];
    int main(){
        int i;
        e[1] = 1;
        for (i=2;i<=SIZE;i++){
            e[i] = euler(i);
        }
        int n;
        while (scanf("%d",&n) != EOF){
            printf("%d
    ",e[n]);
        }
        return 0;
    } 
  • 相关阅读:
    看完这篇,网络面试稳了!
    Python 单元测试详解
    聊一聊,Python自动化测试框架
    测试妹纸说,你这用了几年的postman,只用了它的皮毛
    Win系统设置Apache Tomcat开机后台自动启动
    .Net Framework中的委托与事件——热水器事例
    Unity3d学习清单
    python 进制、ASCII码转换
    python正则 re 模块函数
    mysql 简单手工注入
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6106546.html
Copyright © 2011-2022 走看看