Dart 문제 소수 구하기

SeonHo·2024년 8월 13일

Dart

목록 보기
4/13
post-thumbnail

위에 이미지에 처럼
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;
}

함수의 개념을 몰랐으며, 코드로 구현하는 부분이 많은 어려움이 있었지만
함수를 좀 더 알게 되어서 좋았습니다.

소수 구하기 알고리즘이 있어서 에라토스테네스의 체 링크 걸어뒀습니다.

위키 백과 에라토스테네스의체

profile
목표를 달성하자!

0개의 댓글