GESP4级考试语法知识(算法概论(三))
爱因斯坦的阶梯代码:
//算法1-12
#include<iostream>
using namespace std;
int main()
{
int n=1; //n为所设的阶梯数
while(!((n%2==1)&&(n%3==2)&&(n%5==4)&&(n%6==5)&&(n%7==0)))
n++; //判别是否满足一组同余式
cout<<n<<endl; //输出阶梯数
}
哥德巴赫猜想代码:
//算法1-14
#include<iostream>
#include<cmath>
using namespace std;
int prime(int n); //判断是否均为素数
int main()
{
int i,n;
for(i=4;i<=2000;i+=2) //对2000大于2的偶数分解判断,从4开始,每次增2
{
for(n=2;n<i;n++) //将偶数i分解为两个整数,一个整数是n,一个是i-n
if(prime(n)) //判断第一个整数是否均为素数
if(prime(i-n)) //判断第二个整数是否均为素数
{
cout<< i <<"=" << n <<"+"<<i-n<<endl; //若均是素数则输出
break;
}
if(n==i)
cout<<"error "<<endl;
}
}
int prime(int i) //判断是否为素数
{
int j;
if(i<=1) return 0;
if(i==2) return 1;
for(j=2;j<=(int)(sqrt((double)i));j++)
if(!(i%j)) return 0;
return 1;
}
马克思的数学题代码:
//算法1-11
#include<iostream>
using namespace std;
int main()
{
int x,y,z,count=0; //记录可行解的个数
//cout<<" Men,Women,Children"<<endl;
//cout<<"........................................"<<endl;
for(x=1;x<=9;x++)
{
y=20-2*x; //固定x值然后根据式③求得y值
z=30-x-y; //由式①求得z值
if(3*x+2*y+z==50) //判断当前得到的一组解是否满足式②
cout<<++count<<" "<<x<<' '<<y<<' '<<z<<endl; //打印出第几个解和解值x,y,z
}
}