|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i , a , b ;
b = 0 ;
for ( a = 1 ; a <= 1000 ; a++ )
{
for ( i = 1 ; i < a ; i++ )
{
if ( a % i == 0 )
b = b + i;
else continue;
if ( a == b )
printf (" %d its factors are %d\n" , a , i ); /*我是想把所有因子打印出来的,但是不知道怎么做*/
}
}
}
求1000以内“完数”,求问哪里有问题,什么都打印不出来
本帖最后由 baivip 于 2019-4-2 18:37 编辑
1 #include <stdio.h>
2 #include <math.h>
3
4 void main()
5 {
6 long long i,a,b,c,ss=1,ss1=1;
7
8 for ( a = 1 ; a <= 18 ; a++ ) //a是指数,别改太大了,不然要溢出
9 {
10 for ( ss = 2 ; ss < a ; ss++)
11 {
12 if ( a % ss == 0 )
13 {
14 ss = 0;
15 break;
16 }
17 }
18 if (ss)
19 {
20 for ( i = 2 ; i < sqrt((pow(2,a)-1)) ; i++)
21 {
22 if (a > 13)
23 {
24 if ( (int)((pow(2,a)-1) / 2 ), i == 0 )
25 {
26 ss1 = 0;
27 break;
28 }
29 }
30 else
31 {
32 if ( (int)(pow(2,a)-1) % i == 0 )
33 {
34 ss1 = 0;
35 break;
36 }
37 }
38 }
39
40 if (ss1)
41 {
42 b = ( pow(2,a)-1) * pow(2,a-1);
43 if (a != 1 )
44 {
45 printf("p值为:%lld:",a);
46 printf("完数%.lld的因子分别是:",b);
47 for ( i = 1 ; i <= b ; i++ )
48 {
49 if ( b % i == 0 )
50 {
51 printf("%lld ",i);
52 }
53 }
54 printf("\n");
55 }
56 }
57 else
58 {
59 ss1 = 1;
60 }
61 }
62 else
63 {
64 ss = 1;
65 }
66 }
67
68 }
楼主我帮你弄出来了
|
|