锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
count the number of the integers M (0<M<N) which satisfies gcd(N,M)>1.
鍗籌細(xì)N - 1 - phi(N)
鐢變簬1<N<100000000, 涓嶈偗鑳介澶勭悊鎵鏈夌殑嬈ф媺鍑芥暟
閲囩敤嬈ф媺鎬ц川錛?br> 1.鑻鏄川鏁皃鐨刱嬈″箓錛?#966;錛坣錛? 錛坧-1錛塸^(k-1)
2.鑻錛宯浜掕川錛?#966;錛坢n錛? φ(m)φ(n)
鑻?nbsp;n =p1^a1 * p2^a2 *
* pn^an
鍒?nbsp; phi(n) = (p1-1)*p1^(a1-1) * (p2-1)*p2^(a2-1) *
* (pn-1)*pn^(an-1)
= N * (p1-1)*(p2-2)*
*(pn-1)/(p1*p2*
*pn)
**/
#include <stdio.h>
#define N 10001
__int64 p[5000];
int hash[10001];
int main()
{
__int64 i, j, ans, n, m, temp;
p[0] = 1; //璁板綍绱犳暟涓暟
p[1] = 2;
for (i=3; i<N; i+=2)
{
if (hash[i])
continue;
p[++p[0]] = i;
for (j=i*i; j<N; j+=i)
hash[j] = 1;
} //絳涚礌鏁?nbsp;
while (scanf("%I64d", &n), n)
{
ans = 1;
m = n;
for (i=1; p[i]<=m && i<=p[0]; i++)
if (m%p[i]==0)
{
temp = 1;
while (m%p[i] == 0)
{
m /= p[i];
temp *= p[i];
}
temp /= p[i];
ans*=(p[i]-1)*temp;
}
if (m>1)
{
ans *= (m-1);
} //濡傛灉鍓╀笅閭d釜鏁板ぇ浜?,m涓哄ぇ浜?0000鐨勮川鏁?/span>
printf("%I64d\n", n-ans-1);
}
}
]]>
渚嬪: φ(8) = 4, 鍥犱負(fù)1錛?/span>3錛?/span>5錛?鍧囧拰8浜掕川銆?br>鎬ц川錛?nbsp; 1. 鑻鏄川鏁幫紝φ錛坧錛?/span>= p-1.
2. 鑻鏄川鏁皃鐨刱嬈″箓錛?#966;錛坣錛?/span>= 錛坧-1錛塸^(k-1)
鍥犱負(fù)闄や簡(jiǎn)p鐨勫嶆暟閮戒笌n浜掕川
3. 嬈ф媺鍑芥暟鏄Н鎬у嚱鏁幫紝鑻錛宯浜掕川錛?#966;錛坢n錛?/span>= φ(m)φ(n)
鏍規(guī)嵁榪?鏉℃ц川鎴戜滑灝卞彲浠ラ鍑轟竴涓暣鏁扮殑嬈ф媺鍑芥暟鐨勫叕寮忥紝鍥犱負(fù)涓涓暟鎬誨彲浠ヤ竴浜涜川鏁扮殑涔樼Н鐨勫艦寮忋?br> E(k) = (p1-1)(p2-1)…(pi-1)*(p1^(a1-1))(p2^(a2-1))…(pi^(ai-1))
= k*(p1-1)(p2-1)…(pi-1)/(p1*p2*…pi)
= k*(1-1/p1)*(1-1/p2)…(1-1/pk)
鍦ㄧ▼搴忎腑鍒╃敤嬈ф媺鍑芥暟濡備笅鎬ц川錛屽彲浠ュ揩閫熸眰鍑烘鎷夊嚱鏁扮殑鍊?a涓篘鐨勮川鍥犵礌)
鑻?N%a==0 && (N/a)%a==0) 鍒欐湁:E(N)=E(N/a)*a;
鑻?N%a==0 && (N/a)%a!=0) 鍒欐湁:E(N)=E(N/a)*(a-1);
浠ヤ笅鏄?縐嶆眰嬈ф媺鍑芥暟鐨勭畻娉?br>
2 {
3 __int64 i,j;
4 e[1] = 1;
5 for(i=2;i<=N;i++)
6 if(!e[i])
7 {
8 for(j=i; j<=N; j+=i)
9 {
10 if (!e[j])
11 e[j] = j;
12 e[j] = e[j] / i * (i-1);
13 }
14 }
15 }
鍒╃敤绱犳暟絳涢夛細(xì)
{
__int64 i, j;
p[0] = 1; //璁板綍绱犳暟涓暟
p[1] = 2;
for (i=3; i<N; i+=2)
{
if (hash[i])
continue;
p[++p[0]] = i;
for (j=i*i; j<N; j+=i)
hash[j] = true;
} //絳涚礌鏁?/span>
e[1] = 1;
for (i=1; i<=p[0]; i++)
e[p[i]] = p[i] - 1; //鍒濆鍖栫礌鏁扮殑phi
for (i=2; i<N; i++)
{
if(!e[i])
{
for (j=1; j<=p[0]; j++)
if (i % p[j]==0)
{
if (i / p[j] % p[j])
e[i] = e[i / p[j]] * e[p[j]];
else
e[i] = e[i / p[j] ]* p[j];
break;
} // 鍒╃敤涓婅堪鎬ц川姹傝В
}
}
return ;
}
鏄庢樉絎竴縐嶇殑緙栫▼澶嶆潅搴﹁浣庡緢澶?br>鎵浠ワ紝涓鑸儏鍐典笅錛圢涓嶆槸寰堝ぇ錛夛紝閲囩敤絎竴縐嶅嵆鍙紱
璐村湪榪欓噷渚涗互鍚庡涔?img border=0 src="http://m.shnenglu.com/Emoticons/QQ/13.gif" width=20 height=20>
]]>
棰樼洰澶ф剰鏄綆?^0鍒?^n涓瘡涓暟鐨勬渶宸﹁竟涓浣嶏紝鐒跺悗璁板綍1-9姣忎釜鏁板瓧鍑虹幇鐨勬鏁板茍渚濇鎵撳嵃鍑烘潵錛?br>鑰冭檻鍒皀鐨勮寖鍥?[0,10000]錛?涓嶅彲鑳藉幓璁$畻 2^n
hdu 1060 Leftmost Digit http://acm.hdu.edu.cn/showproblem.php?pid=1060 涓庢棰樹竴鏍?
鍏堢湅涓涓緥瀛愶細(xì)
31415926 鏈宸﹂潰閭d綅鏁版槸3錛屽浣曞緱鏉ワ紵
鍙栧鏁幫細(xì) lg(3.1415926 * 10^7) = lg(3.1415926) + 7
涔熷氨鏄錛屼竴涓暣鏁板彇瀵規(guī)暟浠ュ悗鍙樹負(fù)2閮ㄥ垎錛屼笉濡ㄨ灝忔暟閮ㄥ垎涓篈 (0 <= A < 1)錛屾暣鏁伴儴鍒嗕負(fù)B
鎵浠ワ紝涓涓暣鏁板彲浠ュ啓鎴?nbsp;10^A * 10^B
鑷充簬 10^B 鏄ぇ瀹剁啛鎮(zhèn)夌殑 10000……
鑰?nbsp;10^A 鏄粈涔堟牱瀛愮殑鍛紵 鑲畾鏄皬浜?0鐨勫皬鏁?nbsp; (涓轟粈涔堝憿錛屽鏋滃ぇ浜?0浜?jiǎn)锛孊鐨勫煎垯鍔?)
閭d箞 A 鐨勬暣鏁伴儴鍒嗗氨鏄垜浠姹傜殑鏁?br> 澶ц嚧鎬濊礬灝辨槸錛氬涓涓暟x姹傚鏁幫紝鍙栧嚭灝忔暟閮ㄥ垎A錛屽垯10^A鐨勬暣鏁伴儴鍒嗗氨鏄痻鐨勬渶宸﹂潰鐨勯偅浣嶆暟
榪涘叆鏈錛?br>
x = 2^n
lg(x) = n * lg(2)
A = lg(x) - lg(x)鐨勬暣鏁伴儴鍒?br> 10^A = ……
鍏跺疄榪欓亾棰樺崱鐨勪簨綺懼害闂錛屾暣鏁頒笌灝忔暟鏉ュ洖杞寲鑲畾鏈夌簿搴︽崯澶?nbsp;榪欓噷鐨凙瑕佸姞涓?.0e-6
*/
#include <stdio.h>
#include <math.h>
#define eps (1.0e-6)
int f[10010][10];
int main()
{
int i, j, y;
double A, x, s=log10(2);
f[0][1]=1;
for (i=1; i<=10000; i++) {
for(j=1; j<10; j++)
f[i][j] = f[i-1][j];
x = i * s;
A = x - (int)x;
y = (int) (pow(10, A)+eps);
f[i][y]++;
}
while (scanf("%d",&y),y+1) {
printf("%d", f[y][1]);
for(i=2; i<10; i++)
printf(" %d",f[y][i]);
printf("\n");
}
return 0;
}
]]>