一個數如果恰好等於它的因子之和,這個數就稱為“完數。例如6=1+2+3.編程找出1000以內的所有完數。
1
#import <Foundation/Foundation.h>
//
C語言這個地方是#include<stdio.h>
2
3 int main( int argc, const char * argv[]) {
4 @autoreleasepool {
5 int zhi= 0,i= 1,ax= 0;
6 int nu[ 50]={};
7 while (i< 1000) {
8 for ( int j= 1; j<=i/ 2; j++) {
9 if (!(i%j)) { // 能整除執行
10 // printf("%d ",j);
11 zhi+=j;
12 if (zhi==i&&j>=i/ 2) { // 如果i是偶數判斷到i/2
13 // printf("這個數%d是完數,計算的和是:%d\n",i,zhi);
14 nu[ax]=i;
15 ax++;
16 }
17 }
18 if (i% 2== 0&&j>=i/ 2) { // 如果是奇數判斷到(i-1)/2
19 zhi= 0; // printf("j已經大於i的一半了0000:i===%d\n",i);
20 }
21 if (i% 2!= 0&&j>=(i- 1)/ 2) {
22 zhi= 0; // printf("j已經大於i的一半了1111:i===%d\n",i);
23 printf( " \n ");
24 }
25 }
26 i++;
27
28 }
29 printf( " 1到1000以內的完數分別是: ");
30 for ( int i= 0; nu[i]!= 0; i++) {
31 printf( " %d、 ",nu[i]);
32 }
33 }
34 return 0;
35 }
2
3 int main( int argc, const char * argv[]) {
4 @autoreleasepool {
5 int zhi= 0,i= 1,ax= 0;
6 int nu[ 50]={};
7 while (i< 1000) {
8 for ( int j= 1; j<=i/ 2; j++) {
9 if (!(i%j)) { // 能整除執行
10 // printf("%d ",j);
11 zhi+=j;
12 if (zhi==i&&j>=i/ 2) { // 如果i是偶數判斷到i/2
13 // printf("這個數%d是完數,計算的和是:%d\n",i,zhi);
14 nu[ax]=i;
15 ax++;
16 }
17 }
18 if (i% 2== 0&&j>=i/ 2) { // 如果是奇數判斷到(i-1)/2
19 zhi= 0; // printf("j已經大於i的一半了0000:i===%d\n",i);
20 }
21 if (i% 2!= 0&&j>=(i- 1)/ 2) {
22 zhi= 0; // printf("j已經大於i的一半了1111:i===%d\n",i);
23 printf( " \n ");
24 }
25 }
26 i++;
27
28 }
29 printf( " 1到1000以內的完數分別是: ");
30 for ( int i= 0; nu[i]!= 0; i++) {
31 printf( " %d、 ",nu[i]);
32 }
33 }
34 return 0;
35 }
執行結果: