giải giúp mình bài này bằng ngôn ngữ c++ Nhập vào N. N có phải là số đẹp hay không?số đẹp là tất cả các chữ số của N đều là SNT.
2 câu trả lời
#include<bits/stdc++.h>
using namespace std;
int main()
{
string n;
cin>>n;
for (int i=0;i<n.length();i++)
{
if (n[i]=='2'||n[i]=='3'||n[i]=='5'||n[i]=='7')
{
continue;
}
else {
cout<<"ko phai so dep";
exit(0);
}
}
cout<<"so dep";
}
SOL:
• Gọi $prime(n)$ là hàm kiểm tra số nguyên tố
• Gọi $sumDigits(n)$ là hàm tính tổng các chữ số của $n$
• Kiểm tra nếu $prime(sumDigits(n))=true\Rightarrow n$ là số nguyên tố
• Độ phức tạp thời gian của cách này là $O(n)$
Code:
#include <bits/stdc++.h>
using namespace std;
bool prime(int n) {
if(n<2) return false;
for(int i=2; i<=sqrt(n); i++) {
if(n%i==0) {
return false;
}
}
return true;
}
int sumDigits(int n) {
if(n<10) return n;
else return (n%10)+sumDigits(n/10);
}
int main() {
int n;
cin >> n;
if(prime(sumDigits(n))) {
cout << "YES" << "\n";
} else {
cout << "NO" << "\n";
}
}