这道题挺简单的,但网上说,这是微软的面试题,初学编程的可以看看。
题目:
求质数的和。如: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;
}