Untitled
unknown
plain_text
4 years ago
1.4 kB
10
Indexable
#include<iostream>
#include<math.h>
using namespace std;
bool check(int n){
if(n < 2)
return false;
else
for(int i = 0;i <= sqrt(n);i++)
if(n % i == 0)
return false;
return true;
}
struct Node{
int data;
Node *next;
};
struct Stack{
Node *head;
};
void CreateStack(Stack &s)
{
s.head = NULL;
}
Node *CreateNode(int init){
Node *node = new Node;
node->data = init;
node->next = NULL;
return node;
}
int IsEmpty(Stack s){
if(s.head == NULL)
return 1;
return 0;
}
void Push(Stack &s,int x){
Node *p = CreateNode(x);
p->next = s.head;
s.head= p;
}
void Input(Stack &s){
int n;
cout << "enter n = ";
cin >> n;
for(int i = 0;i < n;i++){
int x; cin >> x;
Push(s,x);
}
}
// bai 1
void PrintStack(Stack s)
{
Node *node = s.head;
while (node != NULL)
{
cout << node->data << ' ';
node = node->next;
}
}
// bai 2
void PrintPrimeNum(Stack &s,Node *node){
Node *q = s.head;
for(int i = 1;i <= 20;i++){
if(q != NULL){
if(check(i) && (q->data % i == 0)){
q->data = q->data / i;
cout << i << " ";
}
else{
q = q->next;
}
}
}
}
int main(){
Stack s;
CreateStack(s);
Node *node;
Input(s);
PrintPrimeNum(s,node);
// PrintStack(s);
return 0;
}Editor is loading...