#----------- # 根基(radical)リストを生成、テキスト形式で保存 #----------- # 環境変数、関数、初期変数の設定 ffold="D:\\R\\function" #関数保存フォルダ cat(ffold) ffile=paste(ffold,"\\function_rad.R",sep="") #根基算出関数 rfold="D:\\R\\prime_number" #素数データ保存フォルダ rfile=paste(rfold,"\\primelist1e+07.txt",sep="") #素数ファイル sfold="D:\\R\\abc" #データ保存フォルダ start_num=2 #探索範囲の初期値 end_num=100000 #探索範囲の最終値 jud_num=(end_num-start_num)/10 #log保存用 jud_num=floor(jud_num) #log保存間隔 sfile=paste(sfold,"\\rad_list_",start_num,"-",end_num,".txt",sep="") #保存ファイル名 lfile=paste("log_",start_num,"-",end_num,".txt",sep="") #ログファイル名 options(scipen=100) #指数表記回避 #---------- # 関数・既存データの読み込み source(ffile) #rad関数ファイル arr_pn<-read.csv(rfile,header=FALSE) #素数データの格納 maxi=nrow(arr_pn) #データ数 #---------- setwd(sfold) #カレントディレクトリの変更 sink(lfile) #ログファイルの初期化 sink() sink(sfile) #保存ファイルの初期化 cat("num,rad(num),dummy\n") sink() cat("num,rad(num),dummy\n") starttime<-proc.time() #経過時間の初期値 jud_i=1 #log保存間隔用 for(num in start_num:end_num){ #探索範囲でループ if(num>1000000000000000){#大きすぎる数字になった場合はループを抜ける cat("numが1000000000000000より大きい数字\n") break } cal=rad(num,arr_pn,maxi) #radを算出 sink(sfile,append=TRUE) #保存 cat(num,cal,"\n",sep=",") sink() if(num==jud_i*jud_num){ #log保存の位置の場合 jud_i=jud_i+1 endtime<-proc.time() keika=(endtime-starttime)[3] sink(lfile,append=TRUE) cat("num=",num," 経過時間=",keika,"\n",sep="") sink() cat("num=",num," 経過時間=",keika,"\n",sep="") } } rm(list=ls(all=TRUE)) #全体の初期化