考研 901程序设计题练习
作者:
你好流星
,
2024-10-17 17:06:55
,
所有人可见
,
阅读 2
考研代码题
1 特殊的完全平方数 在三位数中找出符合条件的数:这个数是完全平方数,且有两位数字相同
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
for(int i=10;i<=35;i++)
{
int x=i*i;
if(x>=100&&x<=999)
{
int a=x%10,b=x/10%10,c=x/100;
if(a==b||a==c||c==b) cout<<i<<" "<<i*i<<endl;
}
}
return 0;
}
2 亲密数 如果A的全部因子之和(不包括A)等于B,B的全部因子之和(不包括A)等于A,则成为一对亲密数 ,求10000以内的亲密数
// 循环加判断
#include<iostream>
#include<algorithm>
using namespace std;
int check(int x)
{
int s=0;
for(int i=1;i<x;i++)
if(x%i==0)s+=i;
return s;
}
int main()
{
int c=0;//对数
for(int i=2;i<=10000;i++)
{
int a=i;
int b=check(a);
if(check(b)==a&&b!=a)
{
cout<<a<<" "<<b<<endl;
c++;
}
}
c/=2;
cout<<c<<endl;
return 0;
}
3 求最大公约数和最小公倍数
#include<iostream>
#include<algorithm>
using namespace std;
int gcd(int a,int b)
{
if(!b) return a;
else return gcd(b,a%b);
}
int main()
{
int a,b;
cin>>a>>b;
int k=gcd(a,b);
cout<<"最大公约数为"<<k<<endl;
cout<<"最小公倍数为"<<a*b/k<<endl;
}
4 回文素数
思路:试除法求质数 和 晒质数法
判断是否为回文:可以转成字符串在翻转比较或者在整数的基础上直接翻转
#include<algorithm>
#include<iostream>
using namespace std;
const int N=1e4;
int prime[N];
int cnt=0;
bool st[N];
void get_prime(int x)
{
for(int i=2;i<=x;i++)
{
if(!st[i]) prime[cnt++]=i;
for(int j=0;prime[j]<=x/i;j++)
{
st[i*prime[j]]=true;
if(i%prime[j]==0) break;
}
}
}
int main()
{
get_prime(N);
for(int i=0;i<cnt;i++)
{
int a=prime[i];
int s=0;
while(a)
{
s=s*10+a%10;
a/=10;
}
if(s==prime[i])
cout<<prime[i]<<endl;
}
}