c - 为什么我的prog无法识别pronic号码?

标签 c for-loop numbers logic

为什么我的程序无法识别 pronic 号码?

int main()
{
    int n , i , c;
    printf("hello this prog can recognize pronic number\n\n");
    printf("please enter an integer:\n");
    scanf("%d" , &n);
    for (i=1 ; i<=n ; i++)
    {
        c = n / i ;
    }

    if (c==i+1)
    {
        printf("this number is  a pronic number");
    }
    else
    {
        printf("this number is NOT pronic number");
    }

    return 0;
}

最佳答案

仅在循环结束后才计算 c 的值。您应该随时检查 c,如果发现该数字是一个 pronic 数字,则跳出循环。

另请注意,您正在执行整数除法,因此您可能会发现 c==i+1,但 c*i 不会等于 n:

int pronic = 0;
for (i = 1; i <= n; i++) {
    if (i * (i + 1) == n) {
        printf("%d is a pronic number.\n", n);
        pronic = 1;
        break;
    }
}

if (!pronic) {
    printf("%d is not a pronic number\n", n);
}

关于c - 为什么我的prog无法识别pronic号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449832/

相关文章:

c - 模拟网格。比较器怎么写?

c - pthread_mutex_lock 100% CPU?

java - 如何按特定顺序打印二维数组的某些部分?

计算 C 数组( vector )中数字的出现次数

javascript - 将一个函数赋值给一个数的成员,为什么不失败呢?

java - 一个 jtextfields 中 jtextfields 的总和值

C : Can't understand how 2nd and 3rd method of declaration of structure and variables of this type are valid?

c - 尝试更改 C 中二维数组中的元素

c++ - c++ 中基于范围的 for 循环的替代方法

java - 在不使用正则表达式的情况下,判断一个字符是 Java 中的字母还是数字的最佳方法是什么?