Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 1421번
- 철도공학
- 호주휴대폰개통
- 호주기숙사
- 교통안전법
- 교통법규
- 시드니
- subclass500
- 교환학생짐싸기
- 백준
- 교환학생짐싸기리스트
- 나무꾼이다솜
- 교통안전관리론
- 호주학생비자
- 철도교통안전관리자
- 교환학생
- 열차운전
- 교환학생짐
- C++
- BOJ
- 군전세객차
- 시드니기숙사
- Scape
- 호주
- scapesydneycentral
- C
- 호주비자신체검사
- 운전이론
- c언어
- UTS
Archives
- Today
- Total
탐정사무소
1978번 소수 찾기(C) 본문
반응형
https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
사전지식
이미 소수 구하기(실버2 난이도)를 푼 적이 있어서, 이것을 이용하여 소수 찾기(실버4 난이도) 문제를 해결할 수 있겠다고 생각했다. 내가 전에 풀었던 소수 구하기의 메커니즘(에라토스테네스의 체)을 다시 사용했다.
https://detective.tistory.com/14
1929번 소수 구하기(C)
11수 만에 성공했다. 분명 나는 맞게 했다고 생각했는데 왜 계속 틀렸다고 하는지 아직도 사실 모르겠다. https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에
detective.tistory.com
해결과정
소수 구하기가 되었으면, 별 거 없다. 한 배열에서 소수들을 미리 찾아놓고, 입력값의 수들이 소수에 해당하는지 for문을 통해 확인만 하면 되었다. arr[num[i]]같은 배열[배열] 표현을 실제로 잘 쓰는지는 모르겠는데, 이 생각밖에 안나서 뭔가 이상해보이긴하나 이렇게 시도해보았다.
코드
#include <stdio.h>
int arr[1001] = { 1,1 };
int main() {
int N, max = 0;
int num[1001];
int i, j;
int cnt = 0;
scanf("%d", &N);
for (i = 0; i < N; i++) {
scanf("%d", &num[i]);
if (num[i]>max) max = num[i];
}
for (i = 2; i <= max; i++) {
if (!arr[i]) {
for (j = i + i; j <= max; j += i)
arr[j] = 1;
}
}
for (i = 0; i < N; i++) {
if (arr[num[i]] == 0) cnt++;
}
printf("%d", cnt);
return 0;
}
결과
반응형
'학과공부 > 백준' 카테고리의 다른 글
4673번 셀프 넘버(C) (0) | 2021.08.16 |
---|---|
2108번 통계학(C) (1) | 2021.08.15 |
1966번 프린터 큐(C) (0) | 2021.08.12 |
1929번 소수 구하기(C) (0) | 2021.08.12 |
15552번 빠른 A+B(C/C++) (0) | 2021.08.11 |
Comments