Untitled
unknown
c_cpp
2 years ago
1.8 kB
4
Indexable
#include <iostream> #include <vector> #include <cmath> using namespace std; bool isPrime(int num) { if (num <= 1) return false; if (num == 2) return true; if (num % 2 == 0) return false; int sqrtNum = sqrt(num); for (int i = 3; i <= sqrtNum; i += 2) { if (num % i == 0) return false; } return true; } vector<vector<int>> generateSpiralPrimeMatrix(int N) { vector<vector<int>> matrix(N, vector<int>(N, 0)); int rowStart = 0, rowEnd = N - 1; int colStart = 0, colEnd = N - 1; int num = 2; while (rowStart <= rowEnd && colStart <= colEnd) { // Fill top row for (int i = colStart; i <= colEnd; ++i) { if (isPrime(num)) { matrix[rowStart][i] = num++; } } ++rowStart; // Fill rightmost column for (int i = rowStart; i <= rowEnd; ++i) { if (isPrime(num)) { matrix[i][colEnd] = num++; } } --colEnd; // Fill bottom row for (int i = colEnd; i >= colStart; --i) { if (isPrime(num)) { matrix[rowEnd][i] = num++; } } --rowEnd; // Fill leftmost column for (int i = rowEnd; i >= rowStart; --i) { if (isPrime(num)) { matrix[i][colStart] = num++; } } ++colStart; } return matrix; } int main() { int N; cout << "Nhap cap N cua ma tran xoan oc nguyen to: "; cin >> N; vector<vector<int>> spiralPrimeMatrix = generateSpiralPrimeMatrix(N); cout << "Ma tran xoan oc nguyen to cap " << N << " la:\n"; for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { cout << spiralPrimeMatrix[i][j] << "\t"; } cout << endl; } return 0; }
Editor is loading...