与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月24日(木)23時24分46秒
  前回は大変お世話になりました。

FOR n=1 TO 2
   PRINT n;
   PRINT n-1
NEXT n

FOR n=3 TO 6
   PRINT n;
   LET  p=n*((2-1)/2)*((3-1)/3)+MOD(n,2)/2+MOD(n,3)/3-MOD(n,2*3)/(2*3)+(2-1)
   PRINT p
NEXT n

FOR n=7 TO 120
   PRINT n;
   LET  p=(n*1*2*4*6/(2*3*5*7))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,15)/15-MOD(n,21)/21-MOD(n,35)/35+MOD(n,30)/30+MOD(n,42)/42+MOD(n,70)/70+MOD(n,105)/105-MOD(n,210)/210+4-1
   PRINT p
NEXT n

END


You Tube のコメントに書いてありました。数式をプログラムにしました。

コメントには、リウヴィルの定理を使って、非自明なゼロ点(リーマン予想)を求め

解析接続すると書いてありましたが、詳細はわかりません。

120以上も試していますが、全く歯が立ちません。



宜しくお願いします。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月25日(金)19時33分1秒
  > No.3847[元記事へ]

たろささんへのお返事です。

少し、わかってきました。

FOR n=1 TO 2
   PRINT n;
   PRINT n-1
NEXT n

FOR n=3 TO 24
   PRINT n;
   LET  p=n*((2-1)/2)*((3-1)/3)+MOD(n,2)/2+MOD(n,3)/3-MOD(n,2*3)/(2*3)+(2-1)
   PRINT p
NEXT n

FOR n=25 TO 48
   PRINT n;
   LET  p=n*(1*2*4/(2*3*5))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5-MOD(n,6)/6-MOD(n,10)/10-MOD(n,15)/15+MOD(n,30)/30+3-1
   PRINT p
NEXT n


FOR n=49 TO 120
   PRINT n;
   LET  p=(n*1*2*4*6/(2*3*5*7))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,15)/15-MOD(n,21)/21-MOD(n,35)/35+MOD(n,30)/30+MOD(n,42)/42+MOD(n,70)/70+MOD(n,105)/105-MOD(n,210)/210+4-1
   PRINT p
NEXT n

FOR n=121 TO 168
   PRINT n;
   LET  p=(n*1*2*4*6*10/(2*3*5*7*11))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,22)/22-MOD(n,15)/15-MOD(n,21)/21-MOD(n,33)/33-MOD(n,35)/35-MOD(n,55)/55-MOD(n,77)/77+MOD(n,30)/30+MOD(n,42)/42+MOD(n,66)/66+MOD(n,70)/70+MOD(n,105)/105+MOD(n,110)/110+MOD(n,165)/165+MOD(n,385)/385+MOD(n,154)/154+MOD(n,231)/231-MOD(n,210)/210-MOD(n,330)/330-mod(n,462)/462-MOD(n,770)/770-MOD(n,1155)/1155+MOD(n,2310)/2310+5-1
   PRINT p
NEXT n

END


自己流です。
---------
*1桁+
*2桁-
*3桁+
*4桁-
*5桁+
--------


宜しくお願いします。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月25日(金)23時41分30秒
  > No.3848[元記事へ]

たろささんへのお返事です。

また、少し進みました。

FOR n=1 TO 2
   PRINT n;
   PRINT n-1
NEXT n

FOR n=3 TO 24
   PRINT n;
   LET  p=n*((2-1)/2)*((3-1)/3)+MOD(n,2)/2+MOD(n,3)/3-MOD(n,2*3)/(2*3)+(2-1)
   PRINT p
NEXT n

FOR n=25 TO 48
   PRINT n;
   LET  p=n*(1*2*4/(2*3*5))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5-MOD(n,6)/6-MOD(n,10)/10-MOD(n,15)/15+MOD(n,30)/30+3-1
   PRINT p
NEXT n

FOR n=49 TO 120
   PRINT n;
   LET  p=(n*1*2*4*6/(2*3*5*7))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,15)/15-MOD(n,21)/21-MOD(n,35)/35+MOD(n,30)/30+MOD(n,42)/42+MOD(n,70)/70+MOD(n,105)/105-MOD(n,210)/210+4-1
   PRINT p
NEXT n

FOR n=121 TO 168
   PRINT n;
   LET  p=(n*1*2*4*6*10/(2*3*5*7*11))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,22)/22-MOD(n,15)/15-MOD(n,21)/21-MOD(n,33)/33-MOD(n,35)/35-MOD(n,55)/55-MOD(n,77)/77+MOD(n,30)/30+MOD(n,42)/42+MOD(n,66)/66+MOD(n,70)/70+MOD(n,105)/105+MOD(n,110)/110+MOD(n,165)/165+MOD(n,385)/385+MOD(n,154)/154+MOD(n,231)/231-MOD(n,210)/210-MOD(n,330)/330-MOD(n,462)/462-MOD(n,770)/770-MOD(n,1155)/1155+MOD(n,2310)/2310+5-1
   PRINT p
NEXT n

FOR n=169 TO 288
   PRINT n;
   LET p=(n*1*2*4*6*10*12/(2*3*5*7*11*13))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11+MOD(n,13)/13-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,22)/22-MOD(n,15)/15-MOD(n,21)/21-MOD(n,33)/33-MOD(n,35)/35-MOD(n,55)/55-MOD(n,77)/77-MOD(n,26)/26-MOD(n,39)/39-MOD(n,65)/65-MOD(n,91)/91-MOD(n,143)/143+MOD(n,30)/30+MOD(n,42)/42+MOD(n,66)/66+MOD(n,70)/70+MOD(n,105)/105+MOD(n,110)/110+MOD(n,165)/165+MOD(n,385)/385+MOD(n,154)/154+MOD(n,231)/231+MOD(n,78)/78+MOD(n,130)/130+MOD(n,182)/182+MOD(n,195)/195+MOD(n,455)/455+MOD(n,1001)/1001+MOD(n,273)/273+MOD(n,286)/286+MOD(n,429)/429+MOD(n,715)/715-MOD(n,210)/210-MOD(n,330)/330-MOD(n,462)/462-MOD(n,770)/770-MOD(n,1155)/1155-MOD(n,390)/390-MOD(n,910)/910-MOD(n,2002)/2002-MOD(n,1365)/1365-MOD(n,3003)/3003-MOD(n,5005)/5005-MOD(n,546)/546-MOD(n,1430)/1430-MOD(n,2145)/2145-MOD(n,858)/858+MOD(n,2310)/2310+MOD(n,2730)/2730+MOD(n,10010)/10010+MOD(n,15015)/15015+MOD(n,6006)/6006+MOD(n,4290)/4290-MOD(n,30030)/30030+(6-1)
   PRINT p
NEXT n

END


2*3*5*7*11*13の組み合わせ表
---------------------------
1 6
2 15
3 20
4 15
5 6
6 1
---------------------------
+(6-1)は欄外(素数の個数?)

この組み合わせのプログラムが出来たら、完成します。

組み合わせ関数は、わかりません。


  宜しくお願いします。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月26日(土)02時43分2秒
  > No.3849[元記事へ]

たろささんへのお返事です。

また、少し進みました。

FOR n=1 TO 2  !(2-1)
   PRINT n;
   PRINT n-1
NEXT n

FOR n=3 TO 24
   PRINT n;
   LET  p=n*((2-1)/2)*((3-1)/3)+MOD(n,2)/2+MOD(n,3)/3-MOD(n,2*3)/(2*3)+(2-1)
   PRINT p
NEXT n

FOR n=25 TO 48
   PRINT n;
   LET  p=n*(1*2*4/(2*3*5))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5-MOD(n,6)/6-MOD(n,10)/10-MOD(n,15)/15+MOD(n,30)/30+3-1
   PRINT p
NEXT n

FOR n=49 TO 120
   PRINT n;
   LET  p=(n*1*2*4*6/(2*3*5*7))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,15)/15-MOD(n,21)/21-MOD(n,35)/35+MOD(n,30)/30+MOD(n,42)/42+MOD(n,70)/70+MOD(n,105)/105-MOD(n,210)/210+4-1
   PRINT p
NEXT n

FOR n=121 TO 168
   PRINT n;
   LET  p=(n*1*2*4*6*10/(2*3*5*7*11))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,22)/22-MOD(n,15)/15-MOD(n,21)/21-MOD(n,33)/33-MOD(n,35)/35-MOD(n,55)/55-MOD(n,77)/77+MOD(n,30)/30+MOD(n,42)/42+MOD(n,66)/66+MOD(n,70)/70+MOD(n,105)/105+MOD(n,110)/110+MOD(n,165)/165+MOD(n,385)/385+MOD(n,154)/154+MOD(n,231)/231-MOD(n,210)/210-MOD(n,330)/330-MOD(n,462)/462-MOD(n,770)/770-MOD(n,1155)/1155+MOD(n,2310)/2310+5-1
   PRINT p
NEXT n

FOR n=169 TO 288
   PRINT n;
   LET p=(n*1*2*4*6*10*12/(2*3*5*7*11*13))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11+MOD(n,13)/13-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,22)/22-MOD(n,15)/15-MOD(n,21)/21-MOD(n,33)/33-MOD(n,35)/35-MOD(n,55)/55-MOD(n,77)/77-MOD(n,26)/26-MOD(n,39)/39-MOD(n,65)/65-MOD(n,91)/91-MOD(n,143)/143+MOD(n,30)/30+MOD(n,42)/42+MOD(n,66)/66+MOD(n,70)/70+MOD(n,105)/105+MOD(n,110)/110+MOD(n,165)/165+MOD(n,385)/385+MOD(n,154)/154+MOD(n,231)/231+MOD(n,78)/78+MOD(n,130)/130+MOD(n,182)/182+MOD(n,195)/195+MOD(n,455)/455+MOD(n,1001)/1001+MOD(n,273)/273+MOD(n,286)/286+MOD(n,429)/429+MOD(n,715)/715-MOD(n,210)/210-MOD(n,330)/330-MOD(n,462)/462-MOD(n,770)/770-MOD(n,1155)/1155-MOD(n,390)/390-MOD(n,910)/910-MOD(n,2002)/2002-MOD(n,1365)/1365-MOD(n,3003)/3003-MOD(n,5005)/5005-MOD(n,546)/546-MOD(n,1430)/1430-MOD(n,2145)/2145-MOD(n,858)/858+MOD(n,2310)/2310+MOD(n,2730)/2730+MOD(n,10010)/10010+MOD(n,15015)/15015+MOD(n,6006)/6006+MOD(n,4290)/4290-MOD(n,30030)/30030+(6-1)
   PRINT p
NEXT n

FOR n=289 TO 360
   PRINT n;
   LET p=(n*1*2*4*6*10*12*16/(2*3*5*7*11*13*17))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11+MOD(n,13)/13+MOD(n,17)/17-MOD(n,6)/6-MOD(n,10)/10-MOD(n,14)/14-MOD(n,22)/22-MOD(n,15)/15-MOD(n,21)/21-MOD(n,33)/33-MOD(n,35)/35-MOD(n,55)/55-MOD(n,77)/77-MOD(n,26)/26-MOD(n,39)/39-MOD(n,65)/65-MOD(n,91)/91-MOD(n,143)/143-MOD(n,34)/34-MOD(n,51)/51-MOD(n,85)/85-MOD(n,119)/119-MOD(n,187)/187-MOD(n,221)/221+MOD(n,30)/30+MOD(n,42)/42+MOD(n,66)/66+MOD(n,70)/70+MOD(n,105)/105+MOD(n,110)/110+MOD(n,165)/165+MOD(n,385)/385+MOD(n,154)/154+MOD(n,231)/231+MOD(n,78)/78+MOD(n,130)/130+MOD(n,182)/182+MOD(n,195)/195+MOD(n,455)/455+MOD(n,1001)/1001+MOD(n,273)/273+MOD(n,286)/286+MOD(n,429)/429+MOD(n,715)/715+MOD(n,102)/102+MOD(n,170)/170+MOD(n,238)/238+MOD(n,374)/374+MOD(n,442)/442+MOD(n,255)/255+MOD(n,357)/357+MOD(n,561)/561+MOD(n,663)/663+MOD(n,595)/595+MOD(n,935)/935+MOD(n,1105)/1105+MOD(n,1309)/1309+MOD(n,1547)/1547+MOD(n,2431)/2431-MOD(n,210)/210-MOD(n,330)/330-MOD(n,462)/462-MOD(n,770)/770-MOD(n,1155)/1155-MOD(n,390)/390-MOD(n,910)/910-MOD(n,2002)/2002-MOD(n,1365)/1365-MOD(n,3003)/3003-MOD(n,5005)/5005-MOD(n,546)/546-MOD(n,1430)/1430-MOD(n,2145)/2145-MOD(n,858)/858-MOD(n,510)/510-MOD(n,714)/714-MOD(n,1122)/1122-MOD(n,1326)/1326-MOD(n,1190)/1190-MOD(n,1870)/1870-MOD(n,2210)/2210-MOD(n,2618)/2618-MOD(n,3094)/3094-MOD(n,4862)/4862-MOD(n,1785)/1785-MOD(n,2805)/2805-MOD(n,3315)/3315-MOD(n,3927)/3927-MOD(n,4641)/4641-MOD(n,7293)/7293-MOD(n,6545)/6545-MOD(n,7735)/7735-MOD(n,12155)/12155-MOD(n,17017)/17017+MOD(n,2310)/2310+MOD(n,2730)/2730+MOD(n,10010)/10010+MOD(n,15015)/15015+MOD(n,6006)/6006+MOD(n,4290)/4290+MOD(n,3570)/3570+MOD(n,5610)/5610+MOD(n,6630)/6630+MOD(n,7854)/7854+MOD(n,9282)/9282+MOD(n,14586)/14586+MOD(n,13090)/13090+MOD(n,15470)/15470+MOD(n,24310)/24310+MOD(n,34034)/34034+MOD(n,19635)/19635+MOD(n,23205)/23205+MOD(n,36465)/36465+MOD(n,51051)/51051+MOD(n,85085)/85085-MOD(n,30030)/30030-MOD(n,39270)/39270-MOD(n,46410)/46410-MOD(n,72930)/72930-MOD(n,102102)/102102-MOD(n,170170)/170170-MOD(n,255255)/255255+MOD(n,510510)/510510+(7-1)
   PRINT p
NEXT n

END


2*3*5*7*11*13*17(p7=17#)組み合わせ表  *(素数階乗)
19^2-1=360
----------------------------
【p0】    (p6=13#)
【p1】1 7 (6)  1組 (+)符号
【p2】2 21(15) 2組 (-)符号
【p3】3 35(20) 3組 (+)符号
【p4】4 35(15) 4組 (-)符号
【p5】5 21(6)  5組 (+)符号
【p6】6 7 (1)  6組 (-)符号
【p7】7 1      7組 (+)符号

------------------------------------
   (素数-1)/素数 素数階乗(素数積)
【p0】
(n*1*2*4*6*10*12*16/(2*3*5*7*11*13*17))

【p1】7個 1組(+) (増1)
+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11+MOD(n,13)/13+MOD(n,17)/17

   宜しくお願いします。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:山中和義  投稿日:2015年 9月26日(土)06時06分5秒
  > No.3850[元記事へ]

たろささんへのお返事です。

>  また、少し進みました。

> FOR n=25 TO 48
>    PRINT n;
>    LET  p=n*(1*2*4/(2*3*5))+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5-MOD(n,6)/6-MOD(n,10)/10-MOD(n,15)/15+MOD(n,30)/30+3-1
>    PRINT p
> NEXT n


n*1*2*4*6/(2*3*5*7)やMOD(n,p)/pなどを計算するので、有理数モードで計算する必要があります。

一応、プログラムとしては、このような記述になると思います。
しかし、MOD(n,p)/pの項数が増えますので、Kが15以上で計算困難です。

一般的に、1からnまでの素数の個数は、(nは10^6程度)
・試し割り法
・篩い法
 エラトステネスの篩い
 個数定理
がありますが、
この計算式は、個数定理と同様あまり実用的ではないようです。



OPTION ARITHMETIC RATIONAL !有理数

LET K=7 !個数 ※1以上

DATA 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97 !素数列
DIM P(25)
MAT READ P

LET X=1 !分子
LET Y=1 !分母
FOR i=1 TO K
   LET X=X*(P(i)-1) !1,2,4,6,10,12,16,18,…
   LET Y=Y*P(i)     !2,3,5,7,11,13,17,19,…
NEXT i

FOR N=P(K)^2 TO P(K+1)^2-1 !範囲

   LET C=0
   FOR J=1 TO 2^K-1 !k個kからm個を選ぶ C(k,m)通り
      LET T=J

      LET S=1 !その積
      LET B=0 !1の個数
      FOR i=1 TO K !k桁の2進法に展開する
         IF MOD(T,2)=1 THEN
            LET S=S*P(i)
            LET B=B+1
         END IF
         LET T=INT(T/2)
      NEXT i
      LET C=C+(-1)^(B+1)*MOD(N,S)/S
   NEXT J

   PRINT N; N*X/Y+C+K-1;"個"
NEXT N

END


 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月26日(土)08時32分31秒
  > No.3851[元記事へ]

山中和義さんへのお返事です。

ありがとうございました。大変感激しました。

> n*1*2*4*6/(2*3*5*7)やMOD(n,p)/pなどを計算するので、有理数モードで計算する必要があります。
>
> 一応、プログラムとしては、このような記述になると思います。
> しかし、MOD(n,p)/pの項数が増えますので、Kが15以上で計算困難です。


k=16
2809  409個
3480  487個
22分50.54秒(i3 3.7G+SSD256GB)

確認しました。


> 一般的に、1からnまでの素数の個数は、(nは10^6程度)
> ・試し割り法
> ・篩い法
>  エラトステネスの篩い
>  個数定理
> がありますが、
> この計算式は、個数定理と同様あまり実用的ではないようです。


リーマン予想については素人なのでわかりません。

元に成っている数式のご紹介です。

YouTube
enlong chiouさん

enlong chiou さんが 1 本の動画を高く評価しました。その中の動画のコメントに書かれています。
----------------------------------------------------------------
pi(1)=0,
pi(10)=10*((2-1)/2)*((3-1)/3)+MOD(10,2)/2+MOD(10,3)/3-MOD(10,2*3)/(2*3)+(2-1)=10/3+0/2+1/3-4/6+1=4,
pi(100)=(100*1*2*4*6/(2*3*5*7))+(0/2)+(1/3)+(0/5)+(2/7)-(4/6)-(0/10)-(2/14)-(10/15)-(16/21)-(30/35)+(10/30)+(16/42)+(30/70)+(100/105)-(100/210)+4-1=25,
----------------------------------------------------------------

実用性については、この式の一部がli(x)対数積分とpi(x)を挟んで下限値として有効で

li(x)対数積分と足して/2だと

(li(10000)+(10000*1*2*4*6*10*12*16*18*22*28*30*36*40*42*46*52*58*60*66*70*72*78*82*88*96
/(2*3*5*7*11*13*17*19*23*29*31*37*41*43*47*53*59*61*67*71*73*79*83*89*97)+mod(10000,2)/2+mod(10000,3)/3+mod(10000,5)/5+mod(10000,7)/7+mod(10000,11)/11+mod(10000,13)/13+mod(10000,17)/17+mod(10000,19)/19+mod(10000,23)/23+mod(10000,29)/29+mod(10000,31)/31+mod(10000,37)/37+mod(10000,41)/41+mod(10000,43)/43+mod(10000,47)/47+mod(10000,53)/53+mod(10000,59)/59+mod(10000,61)/61+mod(10000,67)/67+mod(10000,71)/71+mod(10000,73)/73+mod(10000,79)/79+mod(10000,83)/83+mod(10000,89)/89+mod(10000,97)/97))/2=1230.741065


こんな近似が取れます。



http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:山中和義  投稿日:2015年 9月26日(土)15時15分22秒
  > No.3852[元記事へ]

たろささんへのお返事です。

> k=16
> 2809  409個
> 3480  487個
> 22分50.54秒(i3 3.7G+SSD256GB)
>
> 確認しました。


mod(n,p)/pについて
すべてのnでpは1回だけ計算すればよいですね。 劇的ビフォーアフターです。



OPTION ARITHMETIC RATIONAL !有理数

LET t0=TIME

LET K=16 !個数 ※1以上

DATA 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97 !素数列
DIM P(25)
MAT READ P

LET X=1 !分子
LET Y=1 !分母
FOR i=1 TO K
   LET X=X*(P(i)-1) !1,2,4,6,10,12,16,18,…
   LET Y=Y*P(i)     !2,3,5,7,11,13,17,19,…
NEXT i

DIM C(P(K)^2 TO P(K+1)^2-1)
MAT C=ZER

FOR J=1 TO 2^K-1 !k個からm個を選ぶ C(k,m)通り
   LET T=J

   LET S=1 !その積
   LET B=0 !1の個数
   FOR i=1 TO K !k桁の2進法に展開する(ビットパターン)
      IF MOD(T,2)=1 THEN
         LET S=S*P(i)
         LET B=B+1
      END IF
      LET T=INT(T/2)
   NEXT i
   FOR N=P(K)^2 TO P(K+1)^2-1 !範囲
      LET C(N)=C(N)+(-1)^(B+1)*MOD(N,S)/S
   NEXT N

NEXT J

FOR N=P(K)^2 TO P(K+1)^2-1 !範囲
   PRINT N; N*X/Y+C(N)+K-1;"個"
NEXT N

PRINT TIME-t0
END


 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月26日(土)16時20分18秒
  > No.3853[元記事へ]

山中和義さんへのお返事です。


ありがとうございます。

> > k=16
> > 2809  409個
> > 3480  487個
> > 22分50.54秒(i3 3.7G+SSD256GB)

同環境で試しました。6分12.47秒

最初は、AMD 2.4G  K=8 で 体感的高速処理

(i3 3.7G+SSD256GB) K=16 しばらく、何も出ないので、戸惑いました。

前programの方は

K=19 3時間04分38.05秒 まで確認しました。


> mod(n,p)/pについて
> すべてのnでpは1回だけ計算すればよいですね。 劇的ビフォーアフターです。


確かに倍速以上ですから劇的な進化です。

早速K=20 計算中です。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月26日(土)18時02分14秒
  > No.3853[元記事へ]

山中和義さんへのお返事です。

プログラムについて教えてください。

> LET K=16 !個数 ※1以上
>
> DATA 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97 !素数列
> DIM P(25)


K=25  を設定しました。 添え字が枠外と出ましたので

DATA 101 を加えて

DIM P(26) としたところ実行中で計算しているようですが、これで良いでしょうか?

K=20 は1時間02分00.06秒 でした。前program k=19 3時間04分38.05秒

K=19 の倍の時間がかかりそう。予想でした。1/6 時短でしょうか?

数式をプログラムにした時から、1000の97を目標としてました。

宜しくお願いします。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:山中和義  投稿日:2015年 9月26日(土)19時01分14秒
  > No.3855[元記事へ]

たろささんへのお返事です。

> K=25  を設定しました。 添え字が枠外と出ましたので
>  DATA 101 を加えて
>  DIM P(26) としたところ実行中で計算しているようですが、これで良いでしょうか?

はい、そうです。
以降必要に応じて、素数を追加していけばよいですが、処理時間はだんだん増加します。


> K=19 の倍の時間がかかりそう。予想でした。1/6 時短でしょうか?

こちらでは、3~4倍速くなりました。


> K=20 は1時間02分00.06秒 でした。

n→∞で、ΣC(n+1,k)/ΣC(n,k)≒2なので、K=25では、2^5=32
これより、32時間でしょうか。



 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月26日(土)19時56分48秒
  > No.3856[元記事へ]

山中和義さんへのお返事です。


> はい、そうです。
> 以降必要に応じて、素数を追加していけばよいですが、処理時間はだんだん増加します。

ありがとうございます。安心しました。


> > K=19 の倍の時間がかかりそう。予想でした。1/6 時短でしょうか?
>
> こちらでは、3~4倍速くなりました。

恐れ入ります。

> > K=20 は1時間02分00.06秒 でした。
>
> n→∞で、ΣC(n+1,k)/ΣC(n,k)≒2なので、K=25では、2^5=32
> これより、32時間でしょうか。

monitorの電源落として気長に寝て待つことにしました。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月27日(日)22時15分31秒
  山中和義さんへのお返事です。

今晩は。

> > K=20 は1時間02分00.06秒 でした。
>
> n→∞で、ΣC(n+1,k)/ΣC(n,k)≒2なので、K=25では、2^5=32
> これより、32時間でしょうか。

24時間は過ぎたと思いますが、まだ、計算中です。

なので、テストマシーンの環境 AMD64 Athlon 3800+ 2.4G Win8.1 32bt

素数の組み合わせ
ファイル出力プログラム

ファイル読み込み素数の個数算出プログラム

!プライムコンビ 1848 K=13
OPTION ARITHMETIC RATIONAL
LET t0=TIME
LET A1=78
DIM A(A1)  !p2
LET B1=286
DIM B(B1)  !p3
LET C1=715
DIM C(C1)  !p4
LET D1=1287
DIM D(D1)  !p5
LET E1=1716
DIM E(E1)  !p6
LET F1=1716
DIM F(F1)  !p7
LET G1=1287
DIM G(G1)  !p8
LET H1=715
DIM H(H1)  !p9
LET J1=286
DIM J(J1)  !p10
LET K1=78
DIM K(K1)  !p11
LET L1=13
DIM L(L1)  !p12

ASK DIRECTORY d$
LET f_name3$="PRIME_COMBI_P2"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i2=1 TO A1
   INPUT #3: A(i2)
NEXT i2
CLOSE #3

LET f_name3$="PRIME_COMBI_P3"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i3=1 TO B1
   INPUT #3: B(i3)
NEXT i3
CLOSE #3

LET f_name3$="PRIME_COMBI_P4"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i4=1 TO C1
   INPUT #3: C(i4)
NEXT i4
CLOSE #3

LET f_name3$="PRIME_COMBI_P5"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i5=1 TO D1
   INPUT #3: D(i5)
NEXT i5
CLOSE #3

LET f_name3$="PRIME_COMBI_P6"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i6=1 TO E1
   INPUT #3: E(i6)
NEXT i6
CLOSE #3

LET f_name3$="PRIME_COMBI_P7"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i7=1 TO F1
   INPUT #3: F(i7)
NEXT i7
CLOSE #3

LET f_name3$="PRIME_COMBI_P8"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i8=1 TO G1
   INPUT #3: G(i8)
NEXT i8
CLOSE #3

LET f_name3$="PRIME_COMBI_P9"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR i9=1 TO H1
   INPUT #3: H(i9)
NEXT i9
CLOSE #3

LET f_name3$="PRIME_COMBI_P10"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR ia=1 TO J1
   INPUT #3: J(ia)
NEXT ia
CLOSE #3

LET f_name3$="PRIME_COMBI_P11"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR ib=1 TO K1
   INPUT #3: K(ib)
NEXT ib
CLOSE #3

LET f_name3$="PRIME_COMBI_P12"  ! ファイル名
LET f3$=d$&"\"&f_name3$&".txt"
!PRINT "ファイル保存場所[3] = ";f3$
OPEN #3: NAME f3$ ,ACCESS INPUT
FOR ic=1 TO L1
   INPUT #3: L(ic)
NEXT ic
CLOSE #3
! LET format$="#." & REPEAT$("#",999)
LET p=1*2*4*6*10*12*16*18*22*28*30*36*40/(2*3*5*7*11*13*17*19*23*29*31*37*41)
FOR n=1681 TO 1848
   PRINT n;
   LET s2=0
   LET s3=0
   LET s4=0
   LET s5=0
   LET s6=0
   LET s7=0
   LET s8=0
   LET s9=0
   LET sa=0
   LET sb=0
   LET sc=0

   LET p1=(n*p)+MOD(n,2)/2+MOD(n,3)/3+MOD(n,5)/5+MOD(n,7)/7+MOD(n,11)/11+MOD(n,13)/13+MOD(n,17)/17+MOD(n,19)/19+MOD(n,23)/23+MOD(n,29)/29+MOD(n,31)/31+MOD(n,37)/37+MOD(n,41)/41

   FOR i2=1 TO A1
      LET p2=(-MOD(n,A(i2))/A(i2))+s2
      LET s2=p2
   NEXT i2
   FOR i3=1 TO B1
      LET p3=(MOD(n,B(i3))/B(i3))+s3
      LET s3=p3
   NEXT i3
   FOR i4=1 TO C1
      LET p4=(-MOD(n,C(i4))/C(i4))+s4
      LET s4=p4
   NEXT i4
   FOR i5=1 TO D1
      LET p5=(MOD(n,D(i5))/D(i5))+s5
      LET s5=p5
   NEXT i5
   FOR i6=1 TO E1
      LET p6=(-MOD(n,E(i6))/E(i6))+s6
      LET s6=p6
   NEXT i6
   FOR i7=1 TO F1
      LET p7=(MOD(n,F(i7))/F(i7))+s7
      LET s7=p7
   NEXT i7
   FOR i8=1 TO G1
      LET p8=(-MOD(n,G(i8))/G(i8))+s8
      LET s8=p8
   NEXT i8
   FOR i9=1 TO H1
      LET p9=(MOD(n,H(i9))/H(i9))+s9
      LET s9=p9
   NEXT i9
   FOR ia=1 TO J1
      LET pa=(-MOD(n,J(ia))/J(ia))+sa
      LET sa=pa
   NEXT ia
   FOR ib=1 TO K1
      LET pb=(MOD(n,K(ib))/K(ib))+sb
      LET sb=pb
   NEXT ib
   FOR ic=1 TO L1
      LET pc=(-MOD(n,L(ic))/L(ic))+sc
      LET sc=pc
   NEXT ic

   LET z=p1+p2+p3+p4+p5+p6+p7+p8+p9+pa+pb+pc+MOD(n,304250263527210)/304250263527210+(13-1)
   PRINT z
NEXT n
PRINT TIME-t0;"秒で計算しました"
END

-------------------------------------------------------

素数の組み合わせ
ファイル出力プログラム

行数オバーのためつづく

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年 9月27日(日)22時18分13秒
  たろささんへのお返事です。


> 素数の組み合わせ
> ファイル出力プログラム
>
> 行数オバーのためつづく

続きです。

素数の組み合わせ
ファイル出力プログラム

LET t0=TIME
DATA 2,3,5,7,11,13,17,19,23,29,31,37,41 !K=13
LET k9=13
LET k1=13
DIM P(k9)
MAT READ P
ASK DIRECTORY d$
LET f_name7$="PRIME_COMBI_P2"   ! ファイル名
LET f7$=d$&"\"&f_name7$&".txt"
PRINT "ファイル保存場所[7] = ";f7$
OPEN #7: NAME f7$
ERASE #7

LET N=k1
LET S=0
FOR A=1 TO N-1 !2組(A,B)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N
      LET k9=B
      LET BB=p(k9)
      LET S=AA*BB
      !PRINT AA;"*";BB;"=";s
      !PRINT #7:s             !ファイル出力
      !   LET S=S+A*B
   NEXT B
NEXT A
!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-2 !3組(A,B,C)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-1
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N
         LET k9=C
         LET CC=p(k9)
         LET S=AA*BB*CC
         ! PRINT AA;"*";BB;"*";CC;"=";s
         !PRINT #7:s                    !ファイル出力
         !   LET S=S+A*B*C
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-3 !4組(A,B,C,D)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-2
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-1
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N
            LET k9=D
            LET DD=p(k9)
            LET S=AA*BB*CC*DD
            ! PRINT AA;"*";BB;"*";CC;"*";DD;"=";s
            !PRINT #7:s                        !ファイル出力
            !   LET S=S+A*B*C*D
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-4 !5組(A,B,C,D,E)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-3
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-2
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-1
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N
               LET k9=E
               LET EE=p(k9)
               LET S=AA*BB*CC*DD*EE
               ! PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"=";s
               !PRINT #7:s                  !ファイル出力
               !   LET S=S+A*B*C*D*E
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-5 !6組(A,B,C,D,E,F)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-4
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-3
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-2
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N-1
               LET k9=E
               LET EE=p(k9)
               FOR F=E+1 TO N
                  LET k9=F
                  LET FF=p(k9)
                  LET S=AA*BB*CC*DD*EE*FF
                  ! PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"*";FF;"=";s
                  !PRINT #7:s                  !ファイル出力
                  !   LET S=S+A*B*C*D*E*F
               NEXT F
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-6 !7組(A,B,C,D,E,F,G)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-5
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-4
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-3
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N-2
               LET k9=E
               LET EE=p(k9)
               FOR F=E+1 TO N-1
                  LET k9=F
                  LET FF=p(k9)
                  FOR G=F+1 TO N
                     LET k9=G
                     LET GG=p(k9)
                     LET S=AA*BB*CC*DD*EE*FF*GG
                     ! PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"*";FF;"*";GG;"=";s
                     !PRINT #7:s                  !ファイル出力
                     !   LET S=S+A*B*C*D*E*F*G
                  NEXT G
               NEXT F
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-7 !8組(A,B,C,D,E,F,G,H)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-6
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-5
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-4
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N-3
               LET k9=E
               LET EE=p(k9)
               FOR F=E+1 TO N-2
                  LET k9=F
                  LET FF=p(k9)
                  FOR G=F+1 TO N-1
                     LET k9=G
                     LET GG=p(k9)
                     FOR H=G+1 TO N
                        LET k9=H
                        LET HH=p(k9)
                        LET S=AA*BB*CC*DD*EE*FF*GG*HH
                        ! PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"*";FF;"*";GG;"*";HH;"=";s
                        !PRINT #7:s                  !ファイル出力
                        !   LET S=S+A*B*C*D*E*F*G*H
                     NEXT H
                  NEXT G
               NEXT F
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-8 !9組(A,B,C,D,E,F,G,H,I)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-7
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-6
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-5
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N-4
               LET k9=E
               LET EE=p(k9)
               FOR F=E+1 TO N-3
                  LET k9=F
                  LET FF=p(k9)
                  FOR G=F+1 TO N-2
                     LET k9=G
                     LET GG=p(k9)
                     FOR H=G+1 TO N-1
                        LET k9=H
                        LET HH=p(k9)
                        FOR I=H+1 TO N
                           LET k9=I
                           LET II=p(k9)
                           LET S=AA*BB*CC*DD*EE*FF*GG*HH*II
                           !  PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"*";FF;"*";GG;"*";HH;"*";II;"=";s
                           !PRINT #7:s                  !ファイル出力
                           !   LET S=S+A*B*C*D*E*F*G*H*I
                        NEXT I
                     NEXT H
                  NEXT G
               NEXT F
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-9 !10組(A,B,C,D,E,F,G,H,I,J)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-8
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-7
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-6
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N-5
               LET k9=E
               LET EE=p(k9)
               FOR F=E+1 TO N-4
                  LET k9=F
                  LET FF=p(k9)
                  FOR G=F+1 TO N-3
                     LET k9=G
                     LET GG=p(k9)
                     FOR H=G+1 TO N-2
                        LET k9=H
                        LET HH=p(k9)
                        FOR I=H+1 TO N-1
                           LET k9=I
                           LET II=p(k9)
                           FOR J=I+1 TO N
                              LET k9=J
                              LET JJ=p(k9)
                              LET S=AA*BB*CC*DD*EE*FF*GG*HH*II*JJ
                              !PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"*";FF;"*";GG;"*";HH;"*";II;"*";JJ;"=";s
                              !PRINT #7:s                  !ファイル出力
                              !   LET S=S+A*B*C*D*E*F*G*H*I
                           NEXT J
                        NEXT I
                     NEXT H
                  NEXT G
               NEXT F
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-10 !11組(A,B,C,D,E,F,G,H,I,J,K)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-9
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-8
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-7
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N-6
               LET k9=E
               LET EE=p(k9)
               FOR F=E+1 TO N-5
                  LET k9=F
                  LET FF=p(k9)
                  FOR G=F+1 TO N-4
                     LET k9=G
                     LET GG=p(k9)
                     FOR H=G+1 TO N-3
                        LET k9=H
                        LET HH=p(k9)
                        FOR I=H+1 TO N-2
                           LET k9=I
                           LET II=p(k9)
                           FOR J=I+1 TO N-1
                              LET k9=J
                              LET JJ=p(k9)
                              FOR K=J+1 TO N
                                 LET k9=K
                                 LET KK=p(k9)
                                 LET S=AA*BB*CC*DD*EE*FF*GG*HH*II*JJ*KK
                                 !PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"*";FF;"*";GG;"*";HH;"*";II;"*";JJ;"*";KK;"=";s
                                 !PRINT #7:s                  !ファイル出力
                                 !   LET S=S+A*B*C*D*E*F*G*H*I*J*K
                              NEXT K
                           NEXT J
                        NEXT I
                     NEXT H
                  NEXT G
               NEXT F
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A

!PRINT "-----------------------"

LET N=k1
LET S=0
FOR A=1 TO N-11 !12組(A,B,C,D,E,F,G,H,I,J,K,L)
   LET k9=A
   LET AA=p(k9)
   FOR B=A+1 TO N-10
      LET k9=B
      LET BB=p(k9)
      FOR C=B+1 TO N-9
         LET k9=C
         LET CC=p(k9)
         FOR D=C+1 TO N-8
            LET k9=D
            LET DD=p(k9)
            FOR E=D+1 TO N-7
               LET k9=E
               LET EE=p(k9)
               FOR F=E+1 TO N-6
                  LET k9=F
                  LET FF=p(k9)
                  FOR G=F+1 TO N-5
                     LET k9=G
                     LET GG=p(k9)
                     FOR H=G+1 TO N-4
                        LET k9=H
                        LET HH=p(k9)
                        FOR I=H+1 TO N-3
                           LET k9=I
                           LET II=p(k9)
                           FOR J=I+1 TO N-2
                              LET k9=J
                              LET JJ=p(k9)
                              FOR K=J+1 TO N-1
                                 LET k9=K
                                 LET KK=p(k9)
                                 FOR L=K+1 TO N
                                    LET k9=L
                                    LET LL=p(k9)
                                    LET S=AA*BB*CC*DD*EE*FF*GG*HH*II*JJ*KK*LL
                                    !PRINT AA;"*";BB;"*";CC;"*";DD;"*";EE;"*";FF;"*";GG;"*";HH;"*";II;"*";JJ;"*";KK;"*";LL;"=";s
                                    !PRINT #7:s                  !ファイル出力
                                    !   LET S=S+A*B*C*D*E*F*G*H*I*J*K*L
                                 NEXT L
                              NEXT K
                           NEXT J
                        NEXT I
                     NEXT H
                  NEXT G
               NEXT F
            NEXT E
         NEXT D
      NEXT C
   NEXT B
NEXT A


PRINT TIME-t0;"秒で計算しました"
END


-----------------------------------------------------

K=13
----------------------------
OPTION ARITHMETIC DECIMAL_HIGH
1000桁モード
1681  263
1848  283
38.17 秒で計算しました
----------------------------
OPTION ARITHMETIC DECIMAL
10進モード
1681  263
1848  283
6.35 秒で計算しました
----------------------------
OPTION ARITHMETIC RATIONAL
1681  263
1848  283
1848  283
1337/100 秒で計算しました
(13.37秒)

1848  283
13 秒で計算しました

1848  283
1301/100 秒で計算しました
(13.01秒)

K=X V2 作って頂いたプログラム
----------------------------
OPTION ARITHMETIC RATIONAL
1681  263 個
1848  283 個
267/20
(13.35秒)

1848  283 個
1327/100
(13.27秒)


現状では、ファイル出力のプログラム !PRINT #7:s の開け閉めとファイル名変更で出力しています。

1発でザット出力するには?

どのようにしたら良いかわかりません。

http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:山中和義  投稿日:2015年 9月30日(水)21時37分13秒
  > No.3853[元記事へ]

> mod(n,p)/pについて


mod(n,p)/sの和の計算は、通分,約分が必要なので、整数(分母が1)になるように式を変形してみました。
3倍弱時短できました。



OPTION ARITHMETIC RATIONAL !有理数

LET t0=TIME

LET K=15 !個数 ※1以上

DATA 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101 !素数列
DIM P(26)
MAT READ P

LET X=1 !分子
LET Y=1 !分母
FOR i=1 TO K
   LET X=X*(P(i)-1) !1,2,4,6,10,12,16,18,…
   LET Y=Y*P(i)     !2,3,5,7,11,13,17,19,…
NEXT i

DIM C(P(K)^2 TO P(K+1)^2-1)
MAT C=ZER

FOR J=1 TO 2^K-1 !k個からm個を選ぶ
   LET T=J

   LET S=1 !その積
   LET B=-1 !符号 ※奇数個は正、偶数個は負
   FOR i=1 TO K !k桁の2進法に展開する(ビットパターン)
      IF MOD(T,2)=1 THEN
         LET S=S*P(i)
         LET B=-B
      END IF
      LET T=INT(T/2)
   NEXT i
   FOR N=P(K)^2 TO P(K+1)^2-1 !範囲
      LET C(N)=C(N)+B*MOD(N,S)*Y/S
   NEXT N

NEXT J

FOR N=P(K)^2 TO P(K+1)^2-1 !結果を表示する
   PRINT N; (N*X+C(N))/Y+K-1;"個"
NEXT N

PRINT TIME-t0
END

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年10月 1日(木)07時46分51秒
  > No.3863[元記事へ]

山中和義さんへのお返事です。

おはようございます。

> > mod(n,p)/pについて
>
>
> mod(n,p)/sの和の計算は、通分,約分が必要なので、整数(分母が1)になるように式を変形してみました。
> 3倍弱時短できました。


早速 K=16  試しました。

AMD 2.4GHz Win8.1 32bt

山中様V3 2分16.09秒

自作  7分50.11秒


自作のプログラムでi3 3.7+SSD Win7 32bt  K=23 約 30時間 1時間で30回

あと1時間で計算終了しますので

K=24から試してみたいと思います。

数式の検証が楽になりました。

ありがとうございます。

この数式がどのように求められた?

興味があります。

私は数論は詳しくは知らないのですが、『 Full BASIC による算法通論』

SRQ(x) -領域の 複素根のグラフが掲載されています。

本に掲載されているプログラムは、この掲示板に書くと問題ありますか?

なお、本に掲載されているプログラムは、10進BASIC 動作確認しています。

ax^2+bx+c=0 2次方程式を解く副プログラムの関係プログラムです。


http://blogs.yahoo.co.jp/donald_stinger

 

Re: 与えられた数より小さい素数の個数について

 投稿者:山中和義  投稿日:2015年10月 1日(木)20時03分18秒
  > No.3864[元記事へ]

たろささんへのお返事です。

> 早速 K=16  試しました。

前出のプログラムの修正です。

 FOR N=P(K)^2 TO P(K+1)^2-1 !範囲
    LET C(N)=C(N)+B*MOD(N,S)*Y/S
 NEXT N
で、Y/SはFOR文内では定数ですから外に出します。この方が速いです。

Ver3.1


OPTION ARITHMETIC RATIONAL !有理数

LET t0=TIME

LET K=16 !個数 ※1以上

DATA 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101 !素数列
DIM P(26)
MAT READ P

LET X=1 !分子
LET Y=1 !分母
FOR i=1 TO K
   LET X=X*(P(i)-1) !1,2,4,6,10,12,16,18,…
   LET Y=Y*P(i)     !2,3,5,7,11,13,17,19,…
NEXT i

DIM C(P(K)^2 TO P(K+1)^2-1)
MAT C=ZER

FOR J=1 TO 2^K-1 !k個からm個を選ぶ
   LET T=J

   LET S=1 !その積
   LET B=-1 !符号 ※奇数個は正、偶数個は負
   FOR i=1 TO K !k桁の2進法に展開する(ビットパターン)
      IF MOD(T,2)=1 THEN
         LET S=S*P(i)
         LET B=-B
      END IF
      LET T=INT(T/2)
   NEXT i
   LET YS=Y/S
   FOR N=P(K)^2 TO P(K+1)^2-1 !範囲
      LET C(N)=C(N)+B*MOD(N,S)*YS
   NEXT N

NEXT J

FOR N=P(K)^2 TO P(K+1)^2-1 !結果を表示する
   PRINT N; (N*X+C(N))/Y+K-1;"個"
NEXT N

PRINT TIME-t0
END




> この数式がどのように求められた?


k=3すなわちp=2,3,5、n=5^2..7^2-1すなわちn=25..48 のとき、
  (n*(2-1)*(3-1)*(5-1)/(2*3*5))
 +(mod(n,2)/2+mod(n,3)/3+mod(n,5)/5)
 -(mod(n,2*3)/(2*3)+mod(n,2*5)/(2*5)+mod(n,3*5)/(3*5))
 +mod(n,2*3*5)/(2*3*5)
 +(3-1)
で与えられる。

mod(n,p)=n-[n/p]pより、mod(n,p)/p=n/p-[n/p]となる。

modを置き換えると、
mod(n,2)/2+mod(n,3)/3+mod(n,5)/5
=(n-[n/2]*2)/2+(n-[n/3]*3)/3+(n-[n/5]*5)/5
=(n/2-[n/2])+(n/3-[n/3])+(n/5-[n/5])
=(n/2+n/3+n/5)-([n/2]+[n/3]+[n/5])

mod(n,2*3)/(2*3)+mod(n,2*5)/(2*5)+mod(n,3*5)/(3*5)
=(n/(2*3)+n/(2*5)+n/(3*5))-([n/(2*3)]+[n/(2*5)]+[n/(3*5)])

mod(n,2*3*5)/(2*3*5)=n/(2*3*5)-[n/(2*3*5)]
なので、

前半部分は、
n((3*5+2*5+2*3)-(5+3+2)+1)/(2*3*5)=22n/(2*3*5)
(n*(2-1)*(3-1)*(5-1)/(2*3*5))=8n/(2*3*5)と合わせると、n

さらに後半部分(ガウス関数)と(3-1)とを合わせると、
 n-([n/2]+[n/3]+[n/5]-([n/(2*3)]+[n/(2*5)]+[n/(3*5)])+[n/(2*3*5])+(3-1)
となる。
これは包除原理(個数定理)で個数を求める式ある。

他も同様(だと思う)


よって、逆にたどれば与式を得る。



参考 包除原理(個数定理)による
n=25の場合
√25=5以下の素数は、2,3,5
1からnまでの数で、pで割り切れる数の個数は、[n/p]
包除原理(個数定理)より、2,3,5のいずれかで割り切れる数の個数は、
[25/2]+[25/3]+[25/5] -([25/(2*3)]+[25/(3*5)]+[25/(5*2)]) +[25/(2*3*5)] = 18
この値は、1を含み、2,3,5が除かれている。
よって、素数の個数は、(25-18)+3-1=9個

 

Re: 与えられた数より小さい素数の個数について

 投稿者:たろさ  投稿日:2015年10月 2日(金)00時38分50秒
  > No.3865[元記事へ]

山中和義さんへのお返事です。


> 前出のプログラムの修正です。
>
>  FOR N=P(K)^2 TO P(K+1)^2-1 !範囲
>     LET C(N)=C(N)+B*MOD(N,S)*Y/S
>  NEXT N
> で、Y/SはFOR文内では定数ですから外に出します。この方が速いです。
>
> Ver3.1

現在 Ver3  にて K=24  計算中です。

私の自作のプログラムより3倍位はやいので、予想している時間は24時間前後です。



> > この数式がどのように求められた?

> よって、逆にたどれば与式を得る。


私は算数レベルの知識で下記の式をプログラムにしました。
YouTube

enlong chiouさん

動画サイトのコメント

------------------------------------------------------------------------
pi(1)=0,
pi(10)=10*((2-1)/2)*((3-1)/3)+MOD(10,2)/2+MOD(10,3)/3-MOD(10,2*3)/(2*3)+(2-1)=10/3+0/2+1/3-4/6+1=4,
pi(100)=(100*1*2*4*6/(2*3*5*7))+(0/2)+(1/3)+(0/5)+(2/7)-(4/6)-(0/10)-(2/14)-(10/15)-(16/21)-(30/35)+(10/30)+(16/42)+(30/70)+(100/105)-(100/210)+4-1=25,
------------------------------------------------------------------------
この後にコメントがあるのですが、わたしは読んでも理解できませんでした。


> 参考 包除原理(個数定理)による

大変参考になりました。重ねて感謝致します。

リーマン予想について、私の知識は、

書店で売られている本で読んだ程度の知識です。

 ζ(s)のゼロ点は、カシオ高精度計算サイトにて計算すると

算定対象の桁数を増やすと、ゼロ点が移動してしまいます。

なので、今回の数式(enlong chiouさん)を求める場合

例えば100だとすると、小数点以下3桁でゼロ点を求めれば良いのかも

その様な予感がしました。

しかし、解析接続法については、わかりません。

もし、上手く接続できると、ブラフに現れるのは素数階段になるはずです。

ここがわからないのに、素数の個数を求める数式だけ

ここで得られた、その数式の法則性も興味があります。

一つ問題なのは、数学的に数式で書くと、どのように書けるのだろう。

と、言う事です。もし、数論的に発表予定がある場合はその後でお願いします。

http://blogs.yahoo.co.jp/donald_stinger

 

戻る