poj 1284 求一個數的原根個數
#include<stdio.h> #define MAX_N 65536 int euler[MAX_N]; void init_euler() { int i,j; for(i=0;i<MAX_N;i++) euler[i]=i; for(i=2;i<MAX_N;i++) { if(euler[i]==i) for(j=i;j<MAX_N;j+=i) { euler[j]=euler[j]/i*(i-1); } } } int main() { int a; init_euler(); while(~scanf("%d",&a)) { printf("%d\n",euler[a-1]); } return 0; }
相關推薦
poj 1284 求一個數的原根個數
#include<stdio.h> #define MAX_N 65536 int euler[MAX_N]; void init_euler() { int i,j; for(i=
poj 1284 Primitive Roots 【原根】【數論】
題目連結 : 傳送門 題目大意: 求一個質數的原根個數。 先普及一下原根的定義: 設m是正整數,a是整數,若a模m的階等於euler(m),則稱a為模m的一個原根。 eg: m=7,euler(7)
求最小原根 51nod 1135
back clas save size flag con cout sin hide http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1135 代碼 // the smallest primit
求一個數的原根-1135 原根
數論 1135 原根 1 秒 131,072 KB 0 分 基礎題 設m是正整數,a是整數,若a模m的階等於φ(m),則稱a為模m的一個原根。(其中φ(m)表示m的尤拉函式) 給出1個質數P,找出
POJ 1284:Primitive Roots(素數原根的個數)
Primitive Roots Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5709 Accepted: 3261 Description We say that integer x,
算法 - 求一個數組的最長遞減子序列(C++)
str log bst article subst else from return ear //************************************************************************************
基礎1--求一個數的最大質因數
pre spa pac com urn space align images 分享 基礎1--求一個數的最大質因數 一、心得 二、代碼及結果 1 #include <iostream> 2 using namespace std; 3 int fin
求一個數的二進制數中所含1的個數的代碼實現
article snippet 出現 pri data- count tdi main 代碼實現 #include<stdio.h> int numberOf1_solution1(int n)/*將一個正數以此向右移一位,與1做與運算。直到這個數為零
原根二連 HDU 4992 && poj 1284 Primitive Roots
end fin total ive fas class continue n! blog 原根存在的充要條件 n = 1,2,4,p^r (p為奇素數,r為任意正整數) 原根的性質 若n存在原根,則原根個數為φ(φ(n)) 若g是n的一個原根,則g^
【單調棧】求一個數組第一個比他小的數的位置
type 技術分享 bit esp alt log lap while play 【AC】 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int
求一個數的因子個數
質因數分解 ++ 圖片 src image com pos 質因數 scanf 先將n質因數分解後,如n=x1^a*x2^b*x3^c 個數為 (a+1)*(b+1)*(c+1) poj 2992 #include<stdio.h>#include<st
求一個數的所有因子數
== sqrt color pre col num blog 因子 print def getNum(num): dict={} #因子數都是以sqrt(num)為界對稱的,找出<=sqrt(num)這邊的,用num/i就同時獲得了另一半的因子數,從1開
劍指offer-10.求一個數中二進制格式中1的個數
clas 分析 又是 題目 補碼 off number 替換 一個數 0 題目 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。 1 分析 一個數除2,余數為1,那麽表示二進制中含有一個1。 因此可以使用循環,依次判斷。 但是除法效率底,這裏又是除2,因此可
POJ-1284 Primitive Roots---原根&歐拉函數
urn ace info als while long space msu sin 題目鏈接: https://cn.vjudge.net/problem/POJ-1284 題目大意: 就是給出一個奇素數,求出他的原根的個數。 解題思路: 由於是m是奇素數,m的歐拉函數
O(n)求一個數組中連續區間和的最大值
return 區間 scan CI spa 最大 %d 區間和 數組 int n, a[5000]; int main(){ scanf("%d", &n); for (int i = 1; i <= n; i++)cin >>
用位運算實現四則運算之加減乘除(用位運算求一個數的1/3) via Hackbuteer1
esp sub 沒有 正整數 過程 介紹 異或 sin 完成 轉自:http://blog.csdn.net/hackbuteer1/article/details/7390093 ^: 按位異或;&:按位與; | :按位或 計算機系統中,數值一律用補碼來表示:因為
求一個數組中最大值與最小值
div return urn 技術 code include 一個 最小值 array #include <stdio.h> int main() { int array[10]={100,1,40,29,45,22,98,2,83,75};
不使用庫函數求一個數的立方根
二分 span 使用 ret 面試 分法 個數 bsp class 面試題:不使用庫函數求一個數的立方根。 解法:二分法。 1 double fun(double x) { 2 if (x == 0) return 0; 3 double low =
C語言中求一個數的個位數,十位數...
求出0~999之間的所有“水仙花數”並輸出。 “水仙花數”是指一個三位數,其各位數字的立方和確好等於該數本身,如;153=1+5+3?,則153是一個“水仙花數”。 /* 在數論中,水仙花數(Narcissistic number)也稱為自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong
騷操作:求一個數的位數的小技巧
眾所周知,如果要求一個特別特別大的數的位數,第一時間想到的就是用for,這種方法比較樸素,在某些特定的題中會爆掉long long(詳情請見洛谷P2759 奇怪的函式,此題需要求x的x次方是多少位數,果斷爆long long,會wa的,不要問我是怎麼知道的qwq)。 所以! 下面為大家介紹一個小技巧,可以