首页 > 代码库 > JustOj 1032: 习题6.7 完数
JustOj 1032: 习题6.7 完数
题目描述
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:
输入
N
输出
? its factors are ? ? ?
样例输入
1000
样例输出
6 its factors are 1 2 3 28 its factors are 1 2 4 7 14 496 its factors are 1 2 4 8 16 31 62 124 248
题解:枚举即可 学校oj暂时不能测试但是样例是对的附下图 (欢迎路过的大佬指出错误)
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <vector> 6 #include <cstdlib> 7 #include <iomanip> 8 #include <cmath> 9 #include <ctime>10 #include <map>11 #include <set>12 using namespace std;13 #define lowbit(x) (x&(-x))14 #define max(x,y) (x>y?x:y)15 #define min(x,y) (x<y?x:y)16 #define MAX 10000000000000000017 #define MOD 100000000718 #define pi acos(-1.0)19 #define ei exp(1)20 #define PI 3.14159265358979323846221 #define INF 0x3f3f3f3f3f22 #define mem(a) (memset(a,0,sizeof(a)))23 typedef long long ll;24 ll gcd(ll a,ll b){25 return b?gcd(b,a%b):a;26 }27 const int N=2005;28 const int mod=1e9+7;29 void la(int n)30 {31 int s=n-1,flag=0;32 for(int i=2;i*i<=n;i++){33 if(n%i==0) s-=i+n/i;34 }35 if(s==0) flag=1;36 if(flag){37 cout<<n<<" its factors are";38 for(int i=1;i<n;i++){39 if(n%i==0){40 cout<<" "<<i;41 }42 }43 cout<<endl;44 }45 }46 int main()47 {48 std::ios::sync_with_stdio(false);49 int n;50 cin>>n;51 for(int i=2;i<=n;i++){52 la(i);53 }54 return 0;55 }
JustOj 1032: 习题6.7 完数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。