fortran66のブログ

fortran について書きます。

2012-12-27から1日間の記事一覧

problem 006

ソース・プログラム program PEuler6 implicit none integer :: i, k(100) = [(i, i = 1, 100)] print *, sum(k)**2 - sum(k**2) ! !print *, sum([1:100])**2 - sum([1:100]**2) ! non-standard stop end program PEuler6 実行結果 25164150 続行するには何…

problem 005

ソース・プログラム program PEuler5 implicit none integer, parameter :: n = 20 integer, allocatable :: itab(:), ipow(:) integer :: k itab = ieratos(n) ipow = log(real(n)) / log(real(itab)) ! max prime power print *, product(itab**ipow) ! lc…

problem 004

これは2,3秒かかる。ソートして大きい数から探せば早くなろう。 ソース・プログラム program PEuler4 implicit none integer, parameter :: n = 999 integer :: itab(n, n) = 0 integer, allocatable :: q(:) integer :: i, j forall(i = 1:n, j = 1:n, i…

problem 003

ソース・プログラム program PEuler3 implicit none integer, parameter :: ki = selected_int_kind(12) integer(ki), parameter :: nx = 600851475143 !13195 integer, allocatable :: iptab(:) iptab = ieratos( int(sqrt(real(nx))) ) ! prime numbers up…

problem 002

ソース・プログラム program PEuler2 implicit none integer :: ifib0, ifib1, ifib2, isum ifib0 = 1 ifib1 = 2 isum = ifib1 do ifib2 = ifib0 + ifib1 if (ifib2 > 4 * 10**6) exit if (mod(ifib2, 2) == 0) isum = isum + ifib2 ifib0 = ifib1 ifib1 = i…

problem 001

あんまりやる気もしないが、たまに暇つぶしに。 http://projecteuler.net/ ソース・プログラム program PEuler1 implicit none integer, parameter :: nn = 1000 - 1 integer :: i, num(nn) num = [(i, i = 1, nn)] print *, sum(num, mask = mod(num, 3) ==…

problem 010

素数の総和は4バイト整数からオーバーフローしてしまいました。 ソース・プログラム program PEuler010 implicit none print *, sum( int(ieratos(2 * 10**6), kind = 8) ) ! int4 overflow stop contains function ieratos(n) ! thieve of Eratostenes int…

problem 009

テキトーw ソース・プログラム program PEuler009 implicit none integer :: ia, ib, ic ! a^2 + b^2 = c^2 do ic = 1, 1000 do ib = 1, ic - 1 if (ib > ic) exit ia = 1000 - ib - ic if (ia > ib) cycle if (ia <= 0) exit if (ia * ia + ib * ib == ic …

problem 008

ソース・プログラム program PEuler008 implicit none character(len = 1000) :: fig = & '73167176531330624919225119674426574742355349194934& &96983520312774506326239578318016984801869478851843& &858615607891129494954595017379583319528532088055…

problem 007

ガウスの素数定理によって大体の値の見当をつけてそこまでの素数をやや大目に求めます。 ソース・プログラム program PEuler007 implicit none integer, parameter :: np = 10001 integer, allocatable :: iptab(:) integer :: n ! np ~ n / log(n) ! approx…