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 |
Tags
- BOJ
- 철도교통안전관리자
- 교환학생짐싸기
- 열차운전
- 교통안전법
- 호주
- 호주기숙사
- C++
- UTS
- 1421번
- subclass500
- 시드니기숙사
- 나무꾼이다솜
- 교통법규
- 호주학생비자
- 운전이론
- 철도공학
- Scape
- c언어
- 교환학생
- C
- scapesydneycentral
- 교통안전관리론
- 시드니
- 호주휴대폰개통
- 군전세객차
- 교환학생짐
- 백준
- 교환학생짐싸기리스트
- 호주비자신체검사
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) (0) | 2021.08.15 |
1966번 프린터 큐(C) (0) | 2021.08.12 |
1929번 소수 구하기(C) (0) | 2021.08.12 |
15552번 빠른 A+B(C/C++) (0) | 2021.08.11 |