#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
bool isPrime(int n) {
if (n < 2) {
return false;
}
else {
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0)
return false;
}
}
return true;
}
int main() {
int n;
bool flag = true;
cin >> n;
for (int i = 8; i >= 1; i--) {
n %= (int)pow(10.0, i);
cout << setw(i) << setfill('0') << n;
if (isPrime(n)) {
cout << " Yes" << endl;
}
else {
cout << " No" << endl;
flag = false;
}
}
if (flag == true) {
cout << "All Prime!";
}
return 0;
}
显然,下面这种方法更好,省去了前补0等一些的麻烦,柳神不愧是柳神,简洁高效。
#include <iostream>
#include <cmath>
using namespace std;
int num;
string s;
int is_prime(int x) {
if (x < 2) return 0;
for (int i = 2; i <= sqrt(x); i++)
if (x % i == 0) return 0;
return 1;
}
int main(){
cin >> s;
num = s.size();
while (s.size()) {
cout << s << ' ' << (is_prime(stoi(s)) ? "Yes" : "No") << '\n';
if (is_prime(stoi(s))) --num;
s.erase(s.begin());
}
if (num == 0) cout << "All Prime!";
return 0;
}