微軟公司面試題【1】

            這道題挺簡單的,但網上說,這是微軟的面試題,初學編程的可以看看。

            題目:

                求質數的和。如: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;
}

                 

                 

                

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章