Creative Code

[C++]소수로 만들 수 있는 가장 긴 합성수 수열 본문

혼자 만든 Code

[C++]소수로 만들 수 있는 가장 긴 합성수 수열

빛하루 2023. 8. 28. 20:43
//N번째 소수까지 사용해 길이가 가장 긴 연속된 합성수 수열을 만들때 수열의 최소 소인수 배열 
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int>primes(int &N) {
	vector<int>prime;
	prime.push_back(2);
	prime.push_back(3);
	for (int i = 4; i < 10000; i++) {
		int count = 0;
		for (int j = 2; j < i; j++) {
			if (i % j != 0) {
				count++;
			}
		}
		if (count == i - 2) {
			prime.push_back(i);
		}
		if (prime.size() == N) {
			break;
		}
	}
	return prime;
}
int solution(int N) {
	vector<int>prime = primes(N);
	long long index = 4;
	vector<long long>num;
	int temp = 0;
	long long fac=1;
	for (int i = 0; i < prime.size(); i++) {
		fac *= prime[i];
	}
	while (index > 3 && index<=fac) {
		int cnt = 0;
		for (int i = 0; i < prime.size();) {
			if (index % prime[i] == 0) {
				num.push_back((long long)prime[i]);
				break;
			}
			else {
				i++;
			}
			if (i == prime.size()) {
				int number = num.size();
				if (temp <= number) {
					temp = number;
					for (int j = 0; j < num.size(); j++) {
						cout << num[j] << " ";
					}
					cout << "/// " << number/*배열의 길이*/ << "(" << index - number/*배열의 첫 숫자*/ << ")";
					cout << endl;
				}
				
				
				num.clear();
			}
		}
		index++;
	}
	return 1;
}
 
int main() {
	cout << solution(11) << endl; // 소수를 11개 사용해 만들 수 있는 가장 긴 합성수 수열
}

'혼자 만든 Code' 카테고리의 다른 글

[Python]명함 관리 프로그램  (0) 2023.10.16
[Python]명함 관리 프로그램  (0) 2023.10.16
[C++]텍스트 RPG게임  (0) 2023.08.28
[C]축구선수 관리 프로그램  (0) 2023.08.28
[C]디데이 계산기  (0) 2023.08.28