完美的号码检查

时间:2015-06-10 18:38:48

标签: c function scope

所以我的代码背后的想法是创建一个程序,使用函数来检查和打印1到1000之间的所有完美数字。我已经提出了这个问题,但问题是没有任何打印。它可以成功构建,运行和退出。

我已经完成了3-4次代码,但我无法找到逻辑上的差距,因此我认为它是一个变量定义问题,与范围内的方式有关某些功能是。任何人都有任何输入,为什么我的程序无法识别一个完美的数字,然后打印它?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/*
 * 
 */

void perfectNumCheck(int num);
void perfectNumPrint (int perfectNum);

int main(void) {

    int i;
    for (i = 1; 1 <= 1000; i++)
        perfectNumCheck(i);

}

void perfectNumCheck(int num) {

    int i;
    int temp = 0;

    for (i = 0; i < num; i++) {
        if (num % i == 0)
            temp += i;
    }

    if (temp == num)
        perfectNumPrint(num);

}

void perfectNumPrint(int perfectNum) {

    int i;
    for (i = 0; i < perfectNum; i++) 
        if (perfectNum % i == 0) 
            printf ("%d, ", i);

    printf("are factors of the perfect number %d.\n", perfectNum);

}

3 个答案:

答案 0 :(得分:2)

你这里有一个错字:

for (i = 1; 1 <= 1000; i++)
    perfectNumCheck(i);

应该是

for (i = 1; i <= 1000; i++)
    perfectNumCheck(i);

另外,你除以零。将for循环中的所有i = 0更改为i = 1

答案 1 :(得分:1)

boolean perfectNum(int currentNum) {

    int i, sum = 0;
    for (i = 1; i < currentNum; i++) 
        if (perfectNum % i == 0) 
            sum += i;

    if(sum == currentNum) return ture;
    return false;
}

答案 2 :(得分:0)

完美数字测试:如果所有因子的总和等于数字本身。

    public static bool IsItPerfectNumber(int input)
    {
        bool IsPerfectNumber = false;
        //Validation and Find all Factore 
        List<int> myList = FindFactors(input);            
        //Sum if factor
       int sumOfFactor = SumFactor(myList);

        //Check Is Perfact Number
        if (sumOfFactor == input)    
        {
            IsPerfectNumber = true;
        }
        return IsPerfectNumber;
    }

    public static List<int> FindFactors(int input)
    {
        List<int> myList = new List<int>();

        for (int j = 1; j < input; j++)
        {
            if (input % j == 0)                  {
                myList.Add(j); 
            }
        }
        return myList;
    }

    public static int SumFactor(List<int> myList)
    {
        return myList.Sum();
    }