본문 바로가기
알고리즘 문제 풀이/기타

(Java) 약수 및 소수 구하기

by kakk789 2022. 3. 30.

약수 및 소수 구하기

정수 n을 입력받아 약수 구하는 방법
약수의 개수(cnt) 가 2개일 경우 소수로 판단 가능함
		Scanner sc = new Scanner(System.in);
		System.out.println("N을 입력하세요==> ");
		int n = sc.nextInt();
		int cnt=0;         			// 약수의 개수를 저장
		System.out.print(n+ "의 약수는 ");
		for(int k=1; k<=n; k++) {
			if(n%k==0) {
				System.out.print(k+" "); // 나머지가 0일경우 출력(약수)
				cnt++;				// 약수의 개수를 저장
			}
        }
		System.out.println("입니다.");
		
		if (cnt==2)  				// 약수가 2개 = 소수
			System.out.println("소수입니다");
		else 
			System.out.println("소수가 아닙니다");

소수 구하기 2

		Scanner sc = new Scanner(System.in);
		
		System.out.println("N을 입력하세요==> ");
		int n = sc.nextInt();
		
		int i=0;
		for(i=2; i<n; i++) {
			
			if(n%i==0) {
				break;		
			}
		}	
		// 만약에 n이 소수라면 i이 n과 같을 때에 반복문을 탈출
        // 즉, n이 13이라면 2,3,4,5,6,7,7,8,9,10,11,12을 
        // 모두 실행 후 break 됐을 경우를 의미함
		if(i==n){
			System.out.println(n + "소수입니다");
		}
		else {
			System.out.println(n + "소수가 아닙니다.");
		}

소수 구하기 3

		Scanner sc = new Scanner(System.in);
		
		System.out.println("N을 입력하세요==> ");
		int n = sc.nextInt();
		
		boolean isPrimeNumber = true;
		
		for(int i=2; i<n; i++) {
			
			if(n%i==0) {
				isPrimeNumber=false;
				break;
			}
		}
		if(isPrimeNumber==true) {
			System.out.println("소수");
		}
		else
			System.out.println("소수가 아닙니다.");

소수 구하기 4

2~100사이의 모든 소수 구하기
		int n=100;
		int i=0;
		int k=0;
		
		for (k=2; k<=n;k++) {	
		// k:2,3,4,5,6,7,8,9,10,,,,,
        
			for (i=2; i<=k-1; i++)	
			// k==4라면, 2,3 으로 4를 나눔
			{
				if(k%i==0) { 	
				// 나눠진다면 약수가 있으므로 걍 for문 밖으로 나감
					break;
				}
			}
			
			if(i==k) {		
            // 이건 루프를 끝까지 돌았다는 의미 = 나눌 값이 자기 자신 말고는 없다				
            // 만일 소수 k=7 일 경우 i= 2,3,4,5,6까지 for문 돌다가				
            // for문 끝날때(끝까지 돔) i++ 되서 7이됨. 
            
				System.out.print(k+" ");
			}
		}
반응형

댓글