21.四位反序数
设N是一个四位数,它的9倍恰好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321.
#include <iostream>
using namespace std;
void main()
{
int n,m,g,s,b,q;
for(n=1000;n<1111;n )
{
g=n;
s=n/10;
b=n/100;
q=n/1000;
m=1000*g 100*s 10*b q;
if(9*n==m)
cout<<"N的值为:"<<n<<endl;
}
}
22.求车速
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859.两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少?
#include <iostream>
using namespace std;
void main()
{
int n,m,g,s,b,q,w,speed;
for(n=95860;;n )
{
g=n;
s=n/10;
b=n/100;
q=n/1000;
w=n/10000;
m=10000*g 1000*s 100*b 10*q w;
if(n==m)
{
speed=(m-95859)/2.0;
cout<<"该车的速度为:"<<speed<<endl;
cout<<"新的对称数是:"<<m<<endl;
break;
}
}
}
23.由两个平方三位数获得三个平方二位数
已知两个平方三位数abc和xyz,其中a、b、c、x、y、z未必是不同的;而ax、by、cz是三个平方二位数。请编程求三位数abc和xyz。
#include <iostream>
#include <cmath>
using namespace std;
void f(int n,float s[])
{
int k,j=0;
for(k=100;k>=1;j )
{
s[j]=n/k;
k/=10;
}
}
void main()
{
int i,t;
float a[3],b[3];
cout<<"可能的两个平方三位数是:"<<endl;
for(i=11;i<=31;i )n
for(t=11;t<=31;t )
{
f(i*i,a);
f(t*t,b);
if(sqrt(a[0]*10 b[0])==(int)sqrt(a[0]*10 b[0])
&&sqrt(a[1]*10 b[1])==(int)sqrt(a[1]*10 b[1])
&&sqrt(a[2]*10 b[2])==(int)sqrt(a[2]*10 b[2]))
cout<<i*i<<"和"<<t*t<<endl;
}
}
24.阿姆斯特朗数
如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦成为自恋性数)。如407=43 03 73就是一个阿姆斯特朗数,试编程求1000以内的所有阿姆斯特朗数。
#include <iostream>
#include<cmath>
using namespace std;
void main()
{
int n,g,s,b,m;
cout<<"1000以内的所有阿姆斯特朗数有:"<<endl;
for(n=2;n<1000;n )
{
g=n;
s=n/10;
b=n/100;
m=b*b*b s*s*s g*g*g;
if(n==m)
cout<<n<<" ";
}
}
25.完全数
如果一个数恰好等于它的因子之和,则该数为“完全数”。如:6的因子是1、2、3,而6=1 2 3.所以6是完全数。试求出1000以内所有的完全数。
#include<iostream>
using namespace std;
void main()
{
int n,a,sum=0;
for(n=1;n<=1000;n )
{
for(a=1;a<n;a )
{
if(n%a==0) sum=sum a;
}
if(n==sum)
{
cout<<n<<"的因子是";
for(a=1;a<n;a )
if(n%a==0)
cout<<a<<" ";
cout<<endl;
}
sum=0;
}
}
26.亲密数#####
如果整数A的全部因子(包括1,不包括A本身)之和等于B,且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
#include <iostream>
using namespace std;
void main()
{
int i,j,a,b,count1=0,count2=0;
for(a=1;a<=3000;a )
{
for(i=1;i<=a/2;i )
if(a%i==0) count1 =i;
b=count1;
count1=0;
for(j=1;j<=b/2;j )
if(b%j==0) count2 =j;
if(count2==a)
cout<<a<<"和"<<b<<endl;
}
}
27.自守数#####
自守数是指一个数的平方的尾数等于该数自身的自然数。
例如:252=625 762=5776 93762=87909376
求200000以内的自守数。
28.回文数
打印所有不超过n(取n<256)的,其平方具有对称性的数(也称回文数)。
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int n,i,j,k=0,t=1,m[6];
cout<<"原数 平方后的数"<<endl;
for(i=1;i<256;i )
{
n=i*i;
for(j=1;n!=0;j )
{
m[j]=n;
n/=10;
}
for(i=1;i<j-1;i )
{
k =m[i]*t;
t*=10;
}
if(k==i*i)
cout<<setw(4)<<i<<setw(6)<<i*i<<endl;
}
}
29.求具有abcd=(ab cd)2性质的四位数。
3025这个数具有一种独特的性质:将它平分为两段,即30和25,使之相加后求平方,即(30 25)2,恰好等于3025本身。请求出具有这样性质的全部四位数。
#include <iostream>
using namespace std;
void main()
{
int n,m,a,b;
for(n=1000;n<10000;n )
{
a=n/100;
b=n0;
m=(a b)*(a b);
if(n==m)
cout<<n<<endl;
}
}
30.求素数
求1000以内的所有素数。
#include <iostream>
using namespace std;
void main()
{
int n,i,count=0,f;
for(n=2;n<1000;n )
{
for(f=0,i=1;i<n;i )
if(n%i==0) f ;
if(f==1)
{
cout<<n<<" ";
count ;
if(count==0) cout<<endl;
}
}
}
,