c - C 中的质数

标签 c loops if-statement primes break

第一个程序

#include<stdio.h>

void main()
{
    int n,c;
    printf("enter a numb");
    scanf( "%i", &n);

    for( c = 2; c <= n; c++){
        if( n % c == 0 )
            break;
    }

    if( c == n )
        printf("\nprime\n");
    else
        printf("\nnot prime\n");
    getchar();
}

第二个计划

#include "stdio.h>

int main()
{
    printf("Enter a Number\n");
    int in, loop, rem, chk;
    scanf("%d",&in);

    for ( loop = 1; loop <= in; loop++){
        rem = in % loop;
        if( rem == 0)
            chk = chk +1;
    }
    if ( chk == 2 )
        printf("\nPRIME NUM ENTERED\n");
    else
    printf("\nNUM ENTERED NOT PRIME\n");
    getchar();
}

第二个程序可以工作,但第一个程序是我 friend 写的,程序看起来不错,但通过单步执行检查,我们发现 if第一个程序中的条件在每个输入下都会实现,所以这里的逻辑错误是什么,请帮我找出......

最佳答案

如果我们谈论第一个程序,那么读取整数 n 的方式就会出现问题。您需要传递它的地址:

printf("enter a numb");
scanf("%i",&n);

我很惊讶你的编译器没有捕捉到这一点。

关于c - C 中的质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13550355/

相关文章:

c - If 语句和表达式质疑建议

javascript - imacros javascript 条件 eval 语句

CUDA 记录并等待事件不起作用?

c - TIFF 图像 : How 16bits-RGBA image pixels are interlaced?

algorithm - 能用递归解决的问题都能用循环解决吗?

c/c++ for循环条件语句

c - 了解程序中变量的多重声明和 GCC 编译器行为

c - 从 C 矩阵到现代 OpenGL 中的纹理?

c - 如何使用循环访问矩阵的元素

javascript - OnClick JS If 语句