長くなったんで別エントリで。単体CPUでは弾さんのところを見ると最速に達したっぽいんで、複数CPUでの並列化を考えてみる。といっても単純で、k のループを単純に分割する。
MPI_Init など並列計算オマジナイ nprocs = プロセッサ数 myrank = 自分のプロセッサ番号 for(k=myrank;k<n;k+=nprocs) { ... } 通信して各プロセッサが持っている g の最大値のうちで最大のものを表示
小さいkのテーブルの計算が無駄に重複するが、n が大きいと無視できると思われる。各プロセッサの計算時間が不均一になるが、多分±数10%に収まると思う。いま手元に並列機がないんで試せないけど。