微软公司面试题【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;
}

                 

                 

                

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