c++急求答案,世外高人看过来,

2、亲密数
【问题描述】
如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。
求30000以内的全部亲密数。
3、自守数
【问题描述】
自守数是指一个数的平方的尾数等于该数自身的自然数。
例如:5^2=25;25^2=625;76^2=5776;9376^2=87909376
求10000以内的自守数。
6、高次方数的尾数
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int m,n,i,a,b;
scanf("%d%d",&n,&m);
a=m;
for(i=1;i<n;i++)
if(a>1000)
{
a=a%1000;
}
a=m*a;
if(a%1000==0)
{
printf("The last 3 numbers are 000.");
}
else
{
b=a%1000;
}
printf("The last 3 numbers are %d.",b);
system("pause");
return 0;
}
第6题找错误,找出原因加5悬赏
有图有真相,如会解释,即加5悬赏
求助急急急急急急急急急急!!!!!!!!

亲密数
#include<cstdio>
#include<iostream>
using namespace std;
main()
{
int i,s1,s2;
for(int a=2;a<30000;a++)
{
s1=0;s2=0;
for (i=1;i<a;i++)
{
if (a%i==0)
{
s1+=i;
}
}
for (i=1;i<s1;i++)
{
if (s1%i==0)
{
s2+=i;
}
}
if (s2==a)
{
cout<<s2<<" ";
}
}
cout<<endl;
}
自守数是指一个数的平方的尾数等于该数自身的自然数。
#include<cstdio>
#include<iostream>
using namespace std;
main()
{
int i,s,t;
for(i=4;i<10000;i++)
{
s=i*i;
if (i<10)
t=s%10;
else if (i<100)
t=s%100;
else if (i<1000)
t=s%1000;
else
t=s%10000;
if (i==t)
{
cout<<i<<" ";
}
}
cout<<endl;
}
#include<cstdio>
#include<iostream>
using namespace std;
main()
{
int m,n,i,a,b;
scanf("%d %d",&n,&m); //原来是scanf("%d%d",&n,&m);
a=m;
for(i=1;i<n;i++)
{ //多语句循环加上{
if(a>1000)
{
a=a%1000;
}
a=m*a;
if(a%1000==0)
{
printf("The last 3 numbers are 000.");
}
else
{
b=a%1000;
printf("The last 3 numbers are %d.\n",b);//这行移动到else内
}
} //多语句循环加上}
system("pause");
return 0;

}
若满意请及时采纳,谢谢追问

请问亲密数输出是不是:
6
28
220
284
496
1184
1210
2026
2924
5020
5564
6232
6368
8128
10744
10852
12285
14595
17296
18416

追答

追问

自守数输出:
5
6
25
76
376
625
9376
抱歉,亲,最后一题错了吧,输入:12 12,输出多组,可是我只要12的12次方的后三位数,亲在检查一下,如果答案对了,我会给你增加5悬赏并采纳的!!
快快!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

追答

#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

main()

{

 unsigned long m,n,a,b;

 scanf("%d %d",&n,&m); //原来是scanf("%d%d",&n,&m);

 a=pow(m,n);

 b=a%1000;

 printf("The last 3 numbers are %03d.\n",b);       

 system("pause");

 return 0;

 

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-31

随便写了下,没有考虑效率。

2.

#include <iostream>
using namespace std;
int sum(int num){
int total=1;
for(int i=2;i<num;++i)
if(num%i==0)
total+=i;
return total;
}

int main(){
for(int i=1;i<30000;++i)
for(int j=i+1;j<30000;++j)
if((sum(i)==j)&&(sum(j)==i))
cout<<i<<","<<j<<endl;
}

3
#include <iostream>
#include <string>
using namespace std;
bool test(int num){
int num2=num*num;
while(num){
if(num%10 != num2%10)
return false;
num/=10;
num2/=10;
}
return true;
}
int main(){
for(int i=1;i<10000;++i)
if(test(i))
cout<<i<<endl;
}

6 没有题目,不过
scanf("%d%d",&n,&m);  
两个%d之间要加个逗号或者空格,不然不好区分输入

追问

第3呢
会吗??

本回答被网友采纳
相似回答