求一个三位数
题目描述
求这样一个三位数,该三位数等于其每位数字的阶乘之和。即abc= a! + b! + c! (n!表示n的阶乘)
输入
无
输出
输出这个数
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
bool func2(int);
int main()
{for(int i = 1000;i<=3000;i++){if(func2(i) == true && func2(i%1000) == true && func2(i%100) == true && func2(i%10) == true){cout<<i<<endl;}}return 0;
}
bool func2(int a)
{if(a == 1) return false;if(a == 2) return true;for(int i = 2;i*i<=a;i++){if(a%i == 0)return false;}return true;
}
亲密数对
题目描述
键盘输入N,N在2至2000之间,求2至N中的亲密数对,就是A的因子和等于B,B的因子和等于A,且A≠B。如48和75是亲密数对。48的因子和为2+3+4+6+8+12+16+24=75,而75的因子和为3+5+15+25=48。
输入
只有一行,为一个整数N(2<=N<=2000 )
输出
输出若干行,每行两个整数(用一个空格隔开)。
输入复制
200
输出复制
48 75
75 48
140 195
195 140
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main();
void Sumys(int a)
{int i, sum = 0;for (i = 1; i < a; i++){if (a % i == 0)sum = sum + i;}return;
}
int main()
{for(int i = 6;i<=10000;i++){for(int j = 6;j<i;j++){if (Sumys(i) == j && Sumys(j) == i){printf("%d和%d互为亲密数对", i,j);}}}
}
n到m之间质数的个数
题目描述
编程求正整数M与N之间的所有素数的个数。(1≤M≤N≤30000)
输入
输入只有一行,包括2个整数M,N,之间用一个空格分开。
输出
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
输入复制
1 20
输出复制
8
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
bool func2(int);
int main()
{int m,n;cin>>m>>n;int sum = 0;for(int i = m;i<=n;i++){if(func2(i) == true && func2(i%1000) == true && func2(i%100) == true && func2(i%10) == true){sum++;}}cout<<sum;return 0;
}
bool func2(int a)
{if(a == 1) return false;if(a == 2) return true;for(int i = 2;i*i<=a;i++){if(a%i == 0)return false;}return true;
}