老何最近在学习c++,发现很有趣,跟着学了一些基础知识,能够解决一些简单的问题,有点成就感。
思路:
1、把这个数分解因数。 2、依次判断这些因数是否质数。 3、根据判断返回对应的语句。 ### 知识点:
1、一个非质数必定有一个因数小于它的平方根。 2、函数的定义,以及函数中再引用函数。 3、bool类型数据的使用方法。 4、综合利用所学知识解决问题。 ### 代码实现:
<pre class="io-enlighter-pre">```
#include <iostream>
#include <cmath>
using namespace std; //定义函数判断是否质数,如果是返回true
int isPrime(long long x) {
long long i; bool isPrime = true; //平方根的第一种表示方法
for (int i = 2; i <= sqrt(x); i++) {
if (x % i == 0) {
isPrime = false;
break; // 一旦找到一个因子,就可以确定不是质数 }
}
return isPrime;
} //定义函数遍历每一个因数,如果全是是质数返回true
int yinshu(long long n) {
long long i; //假设因子是质数,如果假设因子是非因数也可。
bool prime = true; //平方根的第二种表示方法
for(i = 2; i * i <= n; i++) {
if(n % i == 0) {
if (isPrime(i) and isPrime(n / i)) {
continue;
} else {
prime = false; break;
}
}
}
return prime;
}
int main() {
long long n;
cin >> n;
if(yinshu(n)) {
cout << It's a Tongtong number. << endl;
} else {
cout << It's not a Tongtong number. << endl; }
return 0;
}