素数如果否则错误

时间:2014-09-19 02:01:18

标签: c if-statement

//Prime test
    if(iSelectedOp == 6 )
    {
        printf("Enter positive integer to be tested: \n");
        scanf("%d", &dInteger1);
        int i;
        int f;
        for (i= 2; i < 10; i++)
        {
            if (num1 % i == 0);
                f++;
                printf("%d is prime\n", dInteger1);
            else    
                printf("no prime\n");
            }

    }

嘿所有,我这里有一个函数,它接受一个输入数字并告诉用户它是否是素数或者不是。我收到的错误是说我有一个没有先前if的别人。我确定它缺少一些语法。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

你的内部if有多个语句,所以它需要括号

if (num1 % i == 0)
{
    f++;
    printf("%d is prime\n", dInteger1);
}
else    
    printf("no prime\n");

此外,您在if之后还有一个额外的分号。

为避免混淆并使代码更易于阅读,我通常会使用{}是否需要它们。这是一种风格,但并非绝对必要。

if (num1 % i == 0)
{
    f++;
    printf("%d is prime\n", dInteger1);
}
else    
{
    printf("no prime\n");
}

答案 1 :(得分:1)

if (num1 % i == 0);
                  ^ delete this

应该是:

if (num1 % i == 0) {
    f++;
    printf("%d is prime\n", dInteger1);
} else {
    printf("no prime\n");
}

没有大括号,if(以及whilefor等)语句的正文只会发送到;(因此对于if (true) a(); b();,{{ 1}}是a()所涵盖的唯一部分; if始终执行,因为它超出了b()的范围。

答案 2 :(得分:0)

您的if语句后面有分号,这会阻止else跟进。在相关的说明中,我认为您的实施根本不起作用......这可能更接近您正在寻找的内容:

    bool prime = true;
    for (i = 2; i*i <= dInteger1; i++)
    {
        if (dInteger1 % i == 0)
            prime = false;
    }
    if(prime)
        printf("%d is prime\n", dInteger1);
    else
        printf("no prime\n");