문제 링크
난이도 : 브론즈 2
문제 내용
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
문제 분석
소수인지 검사해서 맞으면 ++
작성한 코드
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n){
if (n < 2) return false;
for(int i = 2; i * i <= n; i++){
if(n%i==0) return false;
}
return true;
}
int main(){
int n;
int answer=0;
for(scanf("%*d");scanf("%d",&n) != 0;){
if(isPrime(n))answer++;
}
printf("%d", answer);
}
이랬는데 계속 시간초과 뜨길래 왜지?? 했는데..
scanf(”%d”,&n) 했을 때 아무것도 안받아오면 0이 아니고 EOF 반환함..
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n){
if (n < 2) return false;
for(int i = 2; i * i <= n; i++){
if(n%i==0) return false;
}
return true;
}
int main(){
int n;
int answer=0;
scanf("%d", &n);
while(n--){
int k = 0;
scanf("%d", &k);
if(isPrime(k)) answer++;
}
printf("%d", answer);
}
이건 돌아감
우수 코드 분석
#include<stdio.h>
int main()
{
int n,h=0,a,i;
scanf("%d", &n);
while (n--)
{
scanf("%d", &a);
for (i = 2; i < a; i++)
if ((a % i) == 0) break;
if (i == a) h++;
}
printf("%d", h);
}
내가 짠 코드랑 유사함