home > 写経編 > 柴田望洋『明解C言語 入門編』 > 5. 配列 >

ForNext

Only Do What Only You Can Do

041. 素数を求める (ver.4)

VBScript

JScript

Perl

PHP

Python

Ruby

PowerShell

Scala

F#

C

更新日 : 2010.10.08
#include <stdio.h>
int main(int argc, char* argv[])
{
    int i, no;
    int prime[15];
    int ptr = 0;
    unsigned long counter = 0;

    prime[ptr++] = 2;
    prime[ptr++] = 3;

    for (no = 5; no <= 30; no += 2)
    {
        for (i = 1; i < ptr; i++)
        {
            counter++;
            if (no % prime[i] == 0) break; /* 割り切れるので、素数ではない */
        }
        if (ptr == i)
            prime[ptr++] = no; /* 最後まで割り切れなかったので、素数 */
    }

    for (i = 0; i < ptr; i++)
        printf("%d\n", prime[i]);

    printf("計算を行った回数:%lu\n", counter);

    return 0;
}
R:\>lesson041\project1.exe
2
3
5
7
11
13
17
19
23
29
計算を行った回数:42

C++

C++Builder

VC++

C#

Java

Objective-C

D

VB

VB.NET

Delphi

更新日 : 2010.09.24
program Project1;

{$APPTYPE CONSOLE}

uses
    SysUtils;
var
    i, j, no: Integer;
    prime: array[0..14] of Integer;
    ptr:      Integer = 0;
    counter:  Integer = 0;
begin
    prime[ptr] := 2;
    inc(ptr);

    prime[ptr] := 3;
    inc(ptr);

    no := 5;
    while (no <= 30) do
    begin
        j := 0;
        for i := 1 to ptr - 1 do
        begin
            inc(counter);
            if (no mod prime[i] = 0) then
            begin
                j := 1;
                break; { 割り切れるので、素数ではない }
            end;
        end;
        if j = 0 then
        begin
            prime[ptr] := no; { 最後まで割り切れなかったので、素数 }
            inc(ptr);
        end;

        no := no + 2;
    end;

    for i := 0 to ptr - 1 do
    begin
        writeln(format('%d', [prime[i]]));
    end;
    writeln(format('計算を行った回数:%d', [counter]));
end.
S:\>lesson041\project1.exe
2
3
5
7
11
13
17
19
23
29
計算を行った回数:42

Ada

PL/SQL

T-SQL

関数型

inserted by FC2 system