You are on page 1of 7

1.

Lê Văn Minh B22DCCN533


2.Nguyễn Trung Quang B22DCCN647
Họ và tên
Mã sinh viên 3.Lê Văn Hiệp B22DCCN296
4.Lê Tiến Dương B22DCAT063
Nhóm học phần Nhóm 13

Bài lập trình Số 1


Môn Toán rời rạc
Giảng viên Nguyễn Thị Mai Trang

Ngày 12/10/2023
Điểm

Bài 1:Ma trận số nguyên tố


1.1 Đề Bài:
Viết chương trình C++ giải bài toán:

Cho hình vuông gồm 25 hình vuông đơn vị.

Hãy điền các số từ 0 đến 9 vào mỗi hình vuông đơn vị sao cho những

điều kiện sau được thỏa mãn:

a) Đọc từ trái sang phải theo hàng ta nhận được 5 số nguyên tố có 5 chữ số;

b) Đọc từ trên xuống dưới theo cột ta nhận được 5 số nguyên tố có 5 chữ số;

c) Đọc theo hai đường chéo chính ta nhận được 2 số nguyên tố có 5 chữ số;

d) Tổng các chữ số trong mỗi số nguyên tố đều là S cho trước.


INPUT OUTPUT
Nhập tổng S từ bàn phím In ra ma trận theo yêu cầu đề bài

1.2 Sơ đồ khối:
1.3 Code:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int tong(int n) {
int sum = 0;
while (n) {
sum += n % 10;
n /= 10;
}
return sum;
}

bool ktra(string a) {
for (int i = 0; i < 5; i++) {
if (a[i] != '1' && a[i] != '3' && a[i] != '7' && a[i] != '9') {
return false;
}
}
return true;
}

void ssnt(int l, int r, int s, vector<string>& b) {


for (int i = l; i <= r; i++) {
if (tong(i) == s) {
bool isPrime = true;
for (int j = 2; j <= sqrt(i); j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
b.push_back(to_string(i));
}
}
}
}

void in(string h[]) {


for (int z = 0; z < 5; z++) {
for(int k=0;k<5;k++){

cout << h[z][k] << " ";


}
cout << endl;
}
cout <<endl;
}
int ktracot(string h[],vector<string> b){
for(int i=0;i<b.size();i++){
if(b[i][0]==h[0][0]&&b[i][1]==h[1][0]&&b[i][2]==h[2][0]&&b[i][3]==h[3][0]&&b[i][4]==h[4]
[0]){
return 1;
}
}
return 0;
}
int ktracheo1(string h[],vector<string> b){
for(int i=0;i<b.size();i++){
if(b[i][0]==h[0][0]&&b[i][1]==h[1][1]&&b[i][2]==h[2][2]&&b[i][3]==h[3][3]&&b[i][4]==h[4]
[4]){
return 1;
}
}
return 0;
}
int ktracheo2(string h[],vector<string> b){
for(int i=0;i<b.size();i++){
if(b[i][0]==h[0][4]&&b[i][1]==h[1][3]&&b[i][2]==h[2][2]&&b[i][3]==h[3][1]&&b[i][4]==h[4]
[0]){
return 1;
}
}
return 0;
}
int main() {
int l=10000, r=99999, s;
cout << "Nhap tong s: " ;
cin>> s;
vector<string> b;
vector<string> a;
ssnt(l, r, s, b);
for (int i = 0; i < b.size(); i++) {
if (ktra(b[i])) {
a.push_back(b[i]);
}
}
for (int i = 0; i < a.size(); i++) {
string h[5] = {}, c[5] = {};
h[4] = a[i];
for (int j = 0; j < a.size(); j++) {
if (a[j][4] == h[4][4]) {
c[4] = a[j];
}
else continue;
for (int k = 0; k < b.size(); k++) {
if (b[k][4] == c[4][3]) {
h[3] = b[k];
}
else continue;
for (int l = 0; l < b.size(); l++) {
if (b[l][3] == h[3][3] && b[l][4] == h[4][3]) {
c[3] = b[l];
}
else continue;
for (int m = 0; m < b.size(); m++) {
if (b[m][3] == c[3][2] && b[m][4] == c[4][2]) {
h[2] = b[m];
}
else continue;
for (int n = 0; n < b.size(); n++) {
if (b[n][2] == h[2][2] && b[n][3] == h[3][2] && b[n][4] == h[4][2]) {
c[2] = b[n];
}
else continue;
for (int o = 0; o < b.size(); o++) {
if (b[o][2] == c[2][1] && b[o][3] == c[3][1] && b[o][4] == c[4][1]) {
h[1] = b[o];
}
else continue;
for (int p = 0; p < b.size(); p++) {
if (b[p][1] == h[1][1] && b[p][2] == h[2][1] && b[p][3] == h[3][1] && b[p][4] == h[4][1]) {
c[1] = b[p];
}
else continue;
for (int q = 0; q < b.size(); q++) {
if (b[q][1] == c[1][0] && b[q][2] == c[2][0] && b[q][3] == c[3][0] && b[q][4] == c[4][0]) {
h[0] = b[q];
}
else continue;
if(ktracot(h,b)){
}else continue;
if(ktracheo1(h,b)){
}else continue;
if(ktracheo2(h,b)){
}else continue;
in(h);
}
}
}
}
}
}
}
}
}
return 0;
}
1.4 Kết quả:

You might also like