双层循环训练 素数 完数
#include <stdio.h>
#include <stdlib.h>
/*
int isPrime(int n) {
int i;
if (n < 2)
return 0;
for (i = 2; i < n; i++)
if (n % i == 0)
return 0;
return 1;
} */
// 给出一个数字,求他的所有因子
/*
int main() {
int i, k, n;
for (i = 1; i <= 100; i++) {
if (isPrime(i) && isPrime(i + 2))
printf("%d %d\n", i, i + 2);
}
return 0;
}
*/
/*
typedef struct a_ {
int a;
int b;
} a_t;
int isPrime(int); //声明
a_t fun(int a, int b);
int fun1(int a, int b, int* A, int* B) {
*A = a + b;
*B = a - b;
return a*b;
}
int* fun2(int a, int b) {
int* t = (int*)malloc(sizeof(int) * 2);
t[0] = a + b;
t[1] = a - b;
return t;
}
int main() {
int a, b,c;
int A,B;
int* p = NULL;
a = 100, b = 30;
c=fun1(a, b, &A, &B);
p = fun2(a, b);
printf("%d %d\n", p[0], *(p + 1));
if (p != NULL)
free(p);
return 0;
}
int isPrime(int n) { //定义
int i;
if (n < 2)
return 0;
for (i = 2; i < n; i++)
if (n % i == 0)
return 0;
return 1;
}
a_t fun(int a, int b) {
a_t x;
x.a = a + b;
x.b = a - b;
return x;
}
*/
/*
int main(void) {
int n;
int i;
scanf("%d", &n);
for (i = 2; i < n; i++)
if (n % i == 0)
break;
if (i == n)
puts("是");
else
puts("不是");
return 0;
}
*/
int isWanShu(int n) {
int i;
int sum = 0;
for (i = 1; i < n; i++)
if (n % i == 0)
sum += i;
return sum == n;
}
#include <stdio.h>
int main() {
int i, n, k, sum = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++) {
if (isWanShu(i)) {
printf("%d:1", i);
for (k = 2; k < i; k++)
if (i % k == 0)
printf(" %d", k);
puts("");
}
}
return 0;
}