為素數的因數(函式與迴圈)
阿新 • • 發佈:2019-01-04
【問題描述】
請編寫一個函式,完成以下計算:在主函式中接受輸入整數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;
}