JAVA

day02)제어문 관련 알고리즘

code_learner 2021. 12. 23. 00:08

1. 교환 알고리즘

		//정수1입력: 10
		//정수2입력: 12
		//10, 11, 12
		//정수1입력: 12
		//정수2입력: 10
		//10, 11, 12
        
		Scanner sc = new Scanner(System.in);
		System.out.println("정수입력1: ");
		int num1 = sc.nextInt();
		System.out.println("정수입력2: ");
		int num2 = sc.nextInt();
		
		if(num2>num1) {	
			//[교환]알고리즘 -> 임시저장 변수 tmp활용
			int tmp=num1;
			num1=num2;
			num2=tmp;
		}
		while(num2<=num1) {//if else를 용하면 중복코드가 많아 코드 재사용성이 좋지 않기 때문에 교환알고리즘 사용
			System.out.print(num2+" ");
			num2++;	
		}

 

2. 최대공약수 알고리즘

 

		/*2. 최대공약수 구하기
		정수1입력: 18
		정수2입력: 12
		최대공약수는 6입니다.*/
        
        	Scanner sc = new Scanner( System.in);
		
		System.out.print("정수1입력: ");
		int a=sc.nextInt();
		System.out.print("정수2입력: ");
		int b = sc.nextInt();
		int c=0;
		for (int i = a; i >= 1; i--) {
			//1부터 비교하여 가장 큰 값을 출력하는 것보다 뒤에서부터 비교하여 첫번째 값을 출력하는 것이 효율적
			if(a%i==0&&b%i==0) {			
					System.out.println("최대공약수는 "+i+"입니다.");
					break;
			}
		}

3. 1~1000까지의 완전수 구하기

		Scanner sc= new Scanner(System.in);
		for (int i = 1; i <= 1000; i++) {
			int a=0;//i의 약수의 합
			for (int j = 1; j < i; j++) {
            //완전수: 본인을 제외한 약수의 합이 본인과 같으므로 j는 본인보다 작은수가 되야함
				if(i%j==0) {//약수일때 더한다
					a+=j;
				}
			}
			
			if(a==i) {
				System.out.println(i+" ");
			}
			
		}
       //i   i<=1000   sum     j  j<i   i%j==0
      //-----------------------------------------------
      //5   T  		 0   	1   T   	T
      //      		 1   	2   T   	F
      //      		 3   	T   F
      //      		 4   	T   F
      //      		 5   	F
      //6   T  		 0   	1   T   	T
      //      		 1   	2   T   	T
      //      		 3   	3   T   	T
      //      		 6   	4   T   	F
      //      		 5   	T   F
      //      		 6   	F

4. 369게임

     /*
	6. 369 게임
	1 2 짝 4 5 짝 ... 짝 짝 100
         출력해주세요.
	*/
     
     for(int i=1;i<=100;i++) {
         int a=i%10; // i의 일의자리
         int b=i/10; // i의 십의자리
         if((a%3==0&&a!=0) || (b%3==0&&b!=0)) { // a==3||a==6||a==9
            System.out.print("짝! ");
         }
         else {
            System.out.print(i+" ");
         }
      }