/* Bài 258/74/SBT Thầy NTTMK:Hãy sắp xếp các số nguyên tố trong mảng các số nguyên tăng dần,các giá trị khác giữ nguyên giá trị và vị trí. 161.cpp */
/*
Tác giả: Nguyễn Việt Nam Sơn
Trung tâm đào tạo tin học - Thiết kế phần mềm - Sơn Đẹp Trai: www.SonDepTrai.com
Nguồn source code này Tôi viết vào năm 2012 lúc mới bắt đầu học lập trình C/C++ nên một số cách sẽ không được tối ưu - Bạn chỉ nên dùng trên tinh thần tham khảo thôi nhé.
Mong giúp đỡ được Bạn trên con đường Học Lập Trình.
TẤT CẢ VÌ SỰ THÀNH CÔNG CỦA BẠN
*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MAX 10
void main()
{
int a[MAX], b[MAX];
int j = 0, temp;
bool bl;
// nhập mảng
for (int i = 0; i < MAX; i++)
{
printf("nhap 1 so nguyen: ");
scanf("%d", & a[i]);
}
// in ra mảng trước khi sắp xếp
printf("mang truoc sap xep: ");
for (int i = 0; i < MAX; i++)
printf(" %d", a[i]);
// Kiểm tra số nào là số nguyên tố, gán vị trí của nó vào mảng b
for (int i = 0; i < MAX; i++)
{
bl = true;
for (int z = 2; z <= sqrt((float)a[i]); z++)
{
if (a[i] % z == 0)
{
bl = false;
break;
}
}
if (bl)
{
b[j] = i;
j++;
}
}
// Sắp xếp các phần tử là số nguyên tố (vị trí đã được lưu trong mảng b) theo thứ tự giảm dần
for (int i = 0; i < j - 1; i++)
{
for (int k = i + 1; k < j; k++)
{
if(a[b[i]] > a[b[k]])
{
temp = a[b[i]];
a[b[i]] = a[b[k]];
a[b[k]] = temp;
}
}
}
// in mảng sau khi sắp xếp
printf("\nmang sau khi sap xep: ");
for (int i = 0; i < MAX; i++)
printf(" %d", a[i]);
getch();
}
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MAX 10
void main()
{
int a[MAX], b[MAX];
int j = 0, temp;
bool bl;
// nhập mảng
for (int i = 0; i < MAX; i++)
{
printf("nhap 1 so nguyen: ");
scanf("%d", & a[i]);
}
// in ra mảng trước khi sắp xếp
printf("mang truoc sap xep: ");
for (int i = 0; i < MAX; i++)
printf(" %d", a[i]);
// Kiểm tra số nào là số nguyên tố, gán vị trí của nó vào mảng b
for (int i = 0; i < MAX; i++)
{
bl = true;
for (int z = 2; z <= sqrt((float)a[i]); z++)
{
if (a[i] % z == 0)
{
bl = false;
break;
}
}
if (bl)
{
b[j] = i;
j++;
}
}
// Sắp xếp các phần tử là số nguyên tố (vị trí đã được lưu trong mảng b) theo thứ tự giảm dần
for (int i = 0; i < j - 1; i++)
{
for (int k = i + 1; k < j; k++)
{
if(a[b[i]] > a[b[k]])
{
temp = a[b[i]];
a[b[i]] = a[b[k]];
a[b[k]] = temp;
}
}
}
// in mảng sau khi sắp xếp
printf("\nmang sau khi sap xep: ");
for (int i = 0; i < MAX; i++)
printf(" %d", a[i]);
getch();
}