#----------- # 既約ピタゴラス数リストを生成、テキスト形式で保存 #----------- # 環境変数、関数、初期変数の設定 ffold="D:\\R\\function" #関数保存フォルダ ffile=paste(ffold,"\\function_gcd.R",sep="") #最大公約数出力関数 sfold="D:\\R\\pythagorean_theorem" #データ保存フォルダ lfile="log.txt" #ログファイル名 start_s=3 #sの範囲設定 end_s=1000 sfile=paste(sfold,"\\ptn_list_s",start_s,"-",end_s,".txt",sep="") #保存ファイル名 options(scipen=100) #指数表記回避 #---------- # 関数の読み込み source(ffile) #---------- setwd(sfold) #カレントディレクトリの変更 sink(lfile) #ログファイルの初期化 sink() sink(sfile) #保存ファイルの初期化 cat("s,t,a=st,b=(s^2-t^2)/2,c=(s^2+t^2)/2\n") sink() cat("s,t,a=st,b=(s^2-t^2)/2,c=(s^2+t^2)/2\n") starttime<-proc.time() #経過時間の初期値 for(s in start_s:end_s){ flag=0 if(s*s>1000000000000000){#大きすぎる数字になった場合はループを抜ける cat("s*sが1000000000000000より大きい数字\n") break } if(s%%2==1){ #奇数のときだけ処理 t=1 while(t < s){ num=gcd(s,t) if(num==1){ a=s*t b=(s*s-t*t)/2 c=(s*s+t*t)/2 sink(sfile,append=TRUE) cat(s,t,a,b,c,"\n",sep=",") sink() if(flag==0){ endtime<-proc.time() keika=(endtime-starttime)[3] sink(lfile,append=TRUE) cat("s=",s," 経過時間=",keika,"\n",sep="") sink() cat("s=",s," 経過時間=",keika,"\n",sep="") flag=1 } } t=t+2 } } } rm(list=ls(all=TRUE)) #全体の初期化