[Cで]天下一プログラマコンテスト2012予選C-A

2012年9月9日

 

 

天下一プログラマコンテスト2012予選Cの問題を少しやってみたので書いておく.

 

 

問題文

素数とは、1 と自分自身以外に正の約数を持たない、1 以外の自然数のことをいいます。

自然数 n が与えられるので、 n よりも小さい素数の数は何個存在するかを求めてください。


入力

入力は以下の形式で標準入力から与えられる。

n
  • 自然数 n ( 1≤n≤10,000 ) が 1 行で与えられる。

出力

n よりも小さい素数の個数を標準出力に 1 行で出力せよ。
なお、行の終端には改行が必要である。

入力例 1

11

出力例 1

4
  • 11 よりも小さい素数は、 2 , 3 , 5 , 7 の 4 つです。
  • ※ 「11 よりも小さい」なので、11 は含みません。

入力例 2

100

出力例 2

25

入力例 3

10000

出力例 3

1229
これをまずCで組んでみる.

#include<stdio.h>

int prime(int tester);

int main(void){
int input;
int count=0;
int now=2;
scanf("%d\n",&input);
for(;now<input;now++){
if(prime(now)){count++;}
}
printf("%d\n",count);
return 0;
}
int prime(int tester){
int count=2;
if(tester==2){return 1;}
else{
for(;count<tester;count++){
if(tester%count==0){return 0;}
}
return 1;
}
}

これで通りました.

ちょっと解説してみる.

 


int prime(int tester);

で宣言をしておく.

そしてメイン関数で2から入力された数までの素数をカウントしている.

 

 

int prime(int tester)の中身は純粋な素数判定プログラム.

素数はその数(tester)と1以外では割り切れない数であるので,

2からtester未満の数でtesterを割った時に割り切れないということと同じである.

1が返り値であればtesterは素数.0が返り値であればtesterは素数でないということになっている.

javaとかは余裕があったらまた書いてみる.

 

1 Comment
  • Pingback: [Javaで]天下一プログラマコンテスト2012C-1を解いてみた

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


    *


      プロフィール  PR:無料HP  原町中央自動車教習所  売掛金買取 金利  料理 専門学校  エスペリア  中古ホイール 岡山  タイヤ 15インチ  東京 美容専門学校  14インチ ホイール  民泊 代行  物流 業務改善  株エヴァンジェリスト 退会  タイヤ 履き替え 豊橋市  バイアグラ 効果