14 怪数
问题描述 :
寻找怪数:有一种奇怪的自然数,它的比其本身小的所有因子之和等于它本身,例如:6=1+2+3,其中1、2、3都是6的因子,编程找出整数N之内的所有怪数。
输入说明 :
输入一个整数N(10<=N≤10000),在行首和行尾没有多余的空格。
输出说明 :
输出N之内(<=N)的所有怪数,每一行输出一个整数。(注:若N中有3个怪数,你则需要输出三行,每行一个怪数。)所有数据前后没有多余的空格,中间也没有多余的空行。
输入范例 :28
输出范例 :6
28
思想:两重循环,外层遍历从1到输入数,内层从1开始找所有因数,累加,判断最后内层累加结果是否等于外层当前遍历的数,是的话直接打印。
#include <stdio.h> #include <stdlib.h> int main() { int a; scanf("%d",&a); for (int i =1;i<=a;i++){ int sum; for(int j=1;j<i;j++){ if (i%j==0){ sum+=j; } } if (sum==i){ printf("%d\n",i); } sum =0; } return 0; }

浙公网安备 33010602011771号