1151-桐桐数

学习折腾
110 0

老何最近在学习c++,发现很有趣,跟着学了一些基础知识,能够解决一些简单的问题,有点成就感。

问题描述.png

思路:

1、把这个数分解因数。
2、依次判断这些因数是否质数。
3、根据判断返回对应的语句。

知识点:

1、一个非质数必定有一个因数小于它的平方根。
2、函数的定义,以及函数中再引用函数。
3、bool类型数据的使用方法。
4、综合利用所学知识解决问题。

代码实现:

#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;
}
评论 ( 0 )
隐私评论