为素数的因数(函数与循环)

【问题描述】
请编写一个函数,完成以下计算:在主函数中接受输入整数N(N>0),调用函数计算并输出N的所有为素数的正因数,若没有则在返回主函数以后输出No Answer。

【输入形式】
从控制台输入整数N。

【输出形式】
按照从小到大的顺序,在一行上输出N的所有为素数的正因数,各个正因数之间用一个空格分隔,若没有则输出No Answer。

【样例输入】 36

【样例输出】 2 3

【样例输入】 1

【样例输出】 No Answer

【样例说明】
输入的整数N为36,36的所有正因数为1、2、3、4、6、9、12、18、36,其中只有2和3为素数,所以输出2 3。

#include <iostream>
#include <math.h>
using namespace std;

bool isprime(int n);
void PrimeFactor(int n);

int main()
{
    int N;
    cin >> N;
    PrimeFactor(N);
}

bool isprime(int n)
{
    for( int i=2; i<=sqrt(n); ++i )
        if( n%i == 0 ) return false;
    return true;
}

void PrimeFactor(int n)
{
    bool key = 0;
    for( int i=2; i<=n/2; ++i )
    {
        if( n%i == 0 && isprime(i) && key == 1 )//如果测试的数字不是2
            cout << " " << i;
        else if( n%i == 0 && isprime(i) && key == 0 )//如果第一次进入(即测试数字2)
        {
            cout << "2";
            key = 1;
        }
    }
    if( key==0 ) cout << "No Answer";
    cout << endl;
}
原文地址:https://www.cnblogs.com/yuzilan/p/10626138.html