1. 程式人生 > >為素數的因數(函式與迴圈)

為素數的因數(函式與迴圈)

【問題描述】
請編寫一個函式,完成以下計算:在主函式中接受輸入整數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 ) cout << " " << i; else if( n%i == 0 && isprime(i) && key == 0 ) { cout << "2"
; key = 1; } } if( key==0 ) cout << "No Answer"; cout << endl; }