1求水仙花数 编程求所有的水仙花数,水仙花数是指一个三位数,其各位数字立方和等于该数本身,例如: 153是水仙花数,因为153=1*1*1+5*5*5+3*3*3 #include<bits/stdc++.h> using namespace std: int main() int num; int a,b,c; for(num=100;num <=999;num++) { a=num/100: b=num/10%10; c=num %10; if(a*a*a+b*b*b+c*c*c==num) { cout <num <<endl; } return 0; } 思考:如果是求出所有的4位的水仙花数,如何求? 2求完数 编程求1000以内的所有的完数,完数是指一个数恰好等于它的包括1在内的所有的因子之 和,例如,6是完数,因6=1+2+3. #include<bits/stdc++.h> using namespace std; int main() { int num; int sum; for(um=2;um<=1000;num++)/枚举列出1000以内的数 { sum=0,/思考:初始化为0为什么需要写在循环体中? for(inti=1;i<=num-l,i+)/∥枚举列出每个数num的因子 if(num%i==0)/如果有因子
1 求水仙花数 编程求所有的水仙花数,水仙花数是指一个三位数,其各位数字立方和等于该数本身,例如: 153 是水仙花数,因为 153 = 1*1*1+5*5*5+3*3*3 #include<bits/stdc++.h> using namespace std; int main() { int num; int a,b,c; for(num = 100; num <= 999 ; num ++) { a = num / 100; b = num/10%10; c = num %10; if( a*a*a+b*b*b+c*c*c == num) { cout << num <<endl; } } return 0; } 思考:如果是求出所有的 4 位的水仙花数,如何求? 2 求完数 编程求 1000 以内的所有的完数,完数是指一个数恰好等于它的包括 1 在内的所有的因子之 和,例如,6 是完数,因 6=1+2+3. #include<bits/stdc++.h> using namespace std; int main() { int num; int sum; for(num = 2; num <= 1000 ; num ++) //枚举列出 1000 以内的数 { sum = 0;//思考: 初始化为 0 为什么需要写在循环体中? for(int i = 1; i <= num-1; i ++) //枚举列出每个数 num 的因子 { if( num % i == 0) //如果有因子
sum=sum+i;/求因子之和 } if(num=sum)/如果因子之和等于该数本身,则是完数 cout <num <<endl; } return 0; }求一个大的数的完数 https://www.acwing.com/problem/content/description/727/ 一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为 完全数。 例如,6就是一个完全数,因为它的除了本身以外的其他约数的和为1+2+3=6。 现在,给定你N个整数,请你依次判断这些数是否是完全数。 输入格式 第一行包含整数N,表示共有N个测试用例。 接下来N行,每行包含一个需要你进行判断的整数X。 输出格式 每个测试用例输出一个结果,每个结果占一行。 如果测试数据是完全数,则输出X is perfect'”,其中X是测试数据。 如果测试数据不是完全数,则输出X is not perfect'”,其中X是测试数据。 数据范围 1≤N≤100 1sX≤108 输入样例: 3 6 5 28 输出样例: 6 is perfect 5 is not perfect 28 is perfect 注意:代码要优化,否则容易超时 100 42584631
{ sum = sum +i; //求因子之和 } } if( num == sum) //如果因子之和等于该数本身 ,则是完数 { cout << num <<endl; } } return 0; } 求一个大的数的完数 https://www.acwing.com/problem/content/description/727/ 一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为 完全数。 例如,6 就是一个完全数,因为它的除了本身以外的其他约数的和为 1+2+3 = 6。 现在,给定你 N 个整数,请你依次判断这些数是否是完全数。 输入格式 第一行包含整数 N,表示共有 N 个测试用例。 接下来 N 行,每行包含一个需要你进行判断的整数 X。 输出格式 每个测试用例输出一个结果,每个结果占一行。 如果测试数据是完全数,则输出“X is perfect”,其中 X 是测试数据。 如果测试数据不是完全数,则输出“X is not perfect”,其中 X 是测试数据。 数据范围 1≤N≤100 1≤X≤108 输入样例: 3 6 5 28 输出样例: 6 is perfect 5 is not perfect 28 is perfect 注意:代码要优化,否则容易超时 100 42584631
6407132 16116057 7794585 36700210 6124684 39551457 80877955 22089554 92725984 17892387 63149937 45801500 22079144 96231364 30709828 55815955 65061548 66239979 16828721 87920927 96466470 71764408 80614904 19205128 91942507 23911522 35377761 27131983 77576341 52241764 20309670 56081352 70259677 45580358 70625412 494992 78765532 13811846
6407132 16116057 7794585 36700210 6124684 39551457 80877955 22089554 92725984 17892387 63149937 45801500 22079144 96231364 30709828 55815955 65061548 66239979 16828721 87920927 96466470 71764408 80614904 19205128 91942507 23911522 35377761 27131983 77576341 52241764 20309670 56081352 70259677 45580358 70625412 494992 78765532 13811846
33550336 85173548 7565563 49144260 50199698 97261316 71324087 43062912 20997589 46314429 44660813 86203791 15889515 51433644 24618779 21559340 5002115 79022519 66337449 77795302 67619032 28217436 43223746 35253484 33398946 33304239 33850792 28578249 63897696 47469710 65641128 16389277 69230977 16530280 38754260 45608824 75934018 87340226
33550336 85173548 7565563 49144260 50199698 97261316 71324087 43062912 20997589 46314429 44660813 86203791 15889515 51433644 24618779 21559340 5002115 79022519 66337449 77795302 67619032 28217436 43223746 35253484 33398946 33304239 33850792 28578249 63897696 47469710 65641128 16389277 69230977 16530280 38754260 45608824 75934018 87340226
2835183 45982573 4575572 97761145 742249 72248968 94567693 78632580 88392320 58459087 15083149 3853893 6064149 69544365 37265792 17685249 70414350 50977398 32076767 68224989 53411902 98886720 50815664 参考代码: #include <bits/stdc++.h> using namespace std; int main() int N; cin>>N; int x, int sum 1; for(inti=l,i←N,i+) cin >>x; sum=1;∥初始值设定为1 for(intj=2;j<=sqrt(x,j+)∥因子不能包括自己,所以为了累加x,因子从 2开始(每次可以得到两个因子,只需要枚举到x的平方根就好
2835183 45982573 4575572 97761145 742249 72248968 94567693 78632580 88392320 58459087 15083149 3853893 6064149 69544365 37265792 17685249 70414350 50977398 32076767 68224989 53411902 98886720 50815664 参考代码: #include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; int x; int sum = 1; for(int i = 1; i <= N; i ++) { cin >>x; sum = 1; //初始值设定为 1 for(int j = 2; j <= sqrt(x); j ++ ) //因子不能包括自己,所以为了累加 x/j,因子从 2 开始 (每次可以得到两个因子,只需要枚举到 x 的平方根就好