所以我的代码背后的想法是创建一个程序,使用函数来检查和打印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);
}
答案 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();
}