這道題挺簡單的,但網上說,這是微軟的面試題,初學編程的可以看看。
題目:
求質數的和。如:F(4)= 2+3+5+7 = 17,輸入F(x)。
運行結果:
自己敲的代碼:
#include<iostream>
using namespace std;
int num[100]; //全局數組,用來存放質數
int sum = 0; //全局變量,求質數的和
//求解質數函數
//--------------------------------------
void Get_prime(int n) //參數:求解質數的個數
{
int temp; //指標變量
int k = 0; //計數器,當k達到n的時候停止求解
for(int i=2;;i++)
{
temp = 0; //初始指標爲0
for(int j=2;j<i;j++)
{
if(i%j==0)
{
temp=1; //若出現整除,非質數,指標爲1
}
}
if(temp==0 || i==2)//2單獨判斷輸出,如果從未出現整除,指標變量爲初始值0,是質數,輸出
{
num[k] = i; //將質數依次存放在全局數組裏面
k++; //k既作爲計數器,又作爲數組下標
}
else
if(k == n) //當k==n,求解結束,退出函數
return;
else
continue;
}
}
//----------------------------------
//求質數和函數
int Get_p_sum(int n) //參數:質數個數
{
int sum = 0;
for(int i=0; i<n; i++)
{
sum = sum+num[i];
}
return sum; //返回和sum
}
//------------------------------------
//格式輸出函數(有格式比較美觀)
void Out_result(int n)
{
cout<<endl<<"F("<<n<<")"<<" =";
for(int i=0; i<n; i++)
{
if(i == n-1)
{
cout<<" "<<num[n-1]<<" = "<<sum<<endl;
}
else
cout<<" "<<num[i]<<" +";
}
cout<<endl;
}
//----------------------------------
//主函數
int main()
{
int n;
while(1)
{
cout<<"F(x) Input x = ";
cin>>n;
Get_prime(n); //調用質數求解函數
sum = Get_p_sum(n); //調用求和函數
Out_result(n); //調用輸出函數
}
return 0;
}