mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Fortran - 素数一覧の算出!

[ プログラミング, 数学 ] [ Fortran ]

こんばんは。

今回は、 Fortran95 で素数の一覧を算出する方法についてです。

0. 前提条件

  • LMDE2(Linux Mint Debian Edition 2; 64bit) での作業を想定。
  • GCC 6.3.0 (GFortran) でのコンパイルを想定。
  • Fortran には長けていないので、コードに誤りがあるかもしれない。

1. Fortran コードの作成

prime_numbers.f95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
****************************************************
! 素数一覧
! : 入力値以下の素数を全て出力する
!
! date          name            version
! 2017.04.20    mk-mode.com     1.00 新規作成
!
! Copyright(C) 2017 mk-mode.com All Rights Reserved.
!****************************************************
!
program prime_numbers
  implicit none
  integer i, j, n
  logical is_prime
  print *, "自然数を入力してください N:"
  read *, n
  do i = 2, n
    is_prime = .true.
    do j = 2, int(sqrt(dble(i)))
      if (mod(i,j) == 0) then
        is_prime = .false.     ! 割り切れるので素数ではない
        exit
      end if
    end do
    if (is_prime) print *, i   ! もし素数ならば出力
  end do
end program

2. コンパイル

1
$ gfortran prime_numbers.f95 -o prime_numbers

3. 実行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ ./prime_numbers
 自然数を入力してください N:
100
           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

学生時代に使用した Fortran (当時は大文字の FORTRAN77 )を思い出すべく、簡単なコードを書いてみた次第です。(当時覚えたことはほとんど忘れているので、初心者レベル)

少し前に円周率計算を行ったことはありますが、いずれは、他の複雑な計算等も行ってみたいと考えております。

以上。

Comments