Một số nguyên dương S gồm n chữ số (1 ≤ n ≤ 106).
Yêu cầu: Hãy liệt kê các chữ số ai (1 ≤ i ≤ n) là số nguyên tố xuất hiện trong S theo thứ tự từ trái sang phải, nếu các chữ số tìm được trùng nhau thì chỉ liệt kê lần xuất hiện đầu tiên.
Dữ liệu vào: Nhập từ bàn phím một dòng chứa số nguyên dương S.
Dữ liệu ra: Ghi ra một dãy các số ai tìm được thỏa mãn yêu cầu của đề bài. Trường hợp không tìm được thì ghi ra số 0.
Ví dụ:
Bàn phím | Màn hình |
23271 | 2 3 7 |
Giải thích: Các chữ số nguyên tố xuất hiện trong S là 2 3 2 7 nhưng vì số 2 xuất hiện hai lần nên chỉ in ra 2 3 7.
Ràng buộc:
Có 60% test tương ứng với 60% số điểm có 0<n≤6.
Có 20% test tương ứng với 20% số điểm có 6<n≤18.
Có 20% test tương ứng với 20% số điểm có 18<n≤106.
#include <bits/stdc++.h>
using namespace std;
string st;
long long d,i,x;
//chuongtrinhcon
bool ktnt(long long n)
{
for (long long i=2; i<=sqrt(n); i++)
if (n%i==0) return(false);
return(true);
}
//chuongtrinhchinh
int main()
{
cin>>st;
d=st.length();
for (i=0; i<=d-1; i++)
{
x=int(st[i)-48;
if ((x>1) and (ktnt(x)==true)) cout<<x<<" ";
}
return 0;
}