
위에 이미지에 처럼
1부터 100까지 숫자들 중 소수를 구한 뒤
main 함수에 출력하는 프로그램을 만드는 문제였습니다.
main() 함수
void main(){
List<int> primeListMain = [];
// 1부터 100 숫자를 primeListMain에 추가
for(int i = 1; i <= 100; i++){
primeListMain.add(i);
}
// 함수의 호출 prime(함수의 인자값)
// 1부터 100의 리스트를 입력
prime(primeListMain)
}
prime() 함수
// List<int> primeList 함수의 input
// main 함수의 primeListMain 인자 값을
// parameter인 (List<int> primeList) 값에 복사
List<int> prime(List<int> primeList) {
// 함수의 정의
// 소수 추가
List<int> primes = [];
// 1,...,100까지 하나씩 입력
for(int primePrime in primeList){
// 소수일 때 참
bool isPrime = true;
// 소수 구하기
// j는 2부터 99까지 상승
for(int j = 2; j < primePrime; j++){
// 숫자 2부터 99까지
// 자신의 숫자를 j로 나눴을 때 0이면 소수가 아닌 코드
// ex) primePrime 가 8 일때
// j = 2,3,4,5,6,7 이며, 2로 나눴을 때 0
if(primePrime % j == 0){
isPrime = false;
break;
}
}
// 수소일 때 primes에 추가
if(isPrime){
primes.add(primePrime);
}
}
// 함수의 output
return primes;
}
void main(){
List<int> primeListMain = [];
for(int i = 1; i <= 100; i++){
primeListMain.add(i);
// 함수의 output을 primeResult에 저장
List<int> primeResult = prime(primeListMain)
print('1~100 사이의 소수:$primeResult');
}
}
List<int> prime(List<int> primeList) {
List<int> primes = [];
for(int primePrime in primeList){
bool isPrime = true;
for(int j = 2; j < primePrime; j++){
if(primePrime % j == 0){
isPrime = false;
break;
}
} if(isPrime){
primes.add(primePrime);
}
}
return primes;
}
함수의 개념을 몰랐으며, 코드로 구현하는 부분이 많은 어려움이 있었지만
함수를 좀 더 알게 되어서 좋았습니다.
소수 구하기 알고리즘이 있어서 에라토스테네스의 체 링크 걸어뒀습니다.