寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #ALDS1_1_C Prime Numbers

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
n 個の整数を読み込み、それらに含まれる素数の数を出力するプログラムです。

・問題
 約数が 1 とその数自身だけであるような自然数素数と言います。
 例えば、最初の8 つの素数は2, 3, 5, 7, 11, 13, 17, 19 となります。1 は素数ではありません。
 n 個の整数を読み込み、それらに含まれる素数の数を出力するプログラムを作成してください。

・入力される値
 最初の行に n が与えられます。続く n 行に n 個の整数が与えられます。

・期待する出力
 入力に含まれる素数の数を1行に出力してください。

・条件
f:id:neguse_atama:20200422194745p:plain

僕が作成、提出したコードは、以下のとおりです。

/*
 ALDS1_1_C Prime Numbers
 http://judge.u-aizu.ac.jp/
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<cmath>
#include<iostream>
bool prime(int x){
    if(x==2){
        return true;
    }
    if(x<2 || x%2==0){
        return false;
    }
    int loop=3;
    while(loop<=std::sqrt(x)){
        if(x%loop==0){
            return false;
        }
        loop+=2;
    }
    return true;
}
int main(void){
    int n,x,ans=0;
    std::cin>>n;
    for(int loop=0;loop<n;loop++){
        std::cin>>x;
        bool tr_fa=prime(x);
        if(tr_fa==true){
            ans+=1;
        }
    }
    std::cout<<ans<<std::endl;
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
ALDS1_1_C Prime Numbers