Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
265 views
in Technique[技术] by (71.8m points)

loops - Boolean value isn't working properly in C Programming Language

I tried to make a prime number generator but I don't know why it's not working. Because according to the code, it should work fine. I used a if statement somewhere in the functions and I think it's getting a false value every time when it should get a true value. It should give me all the prime numbers until the user provided value but it gives me nothing.

#include <stdio.h>
#include <math.h>
#include <stdbool.h>
bool isPrime(int num) {
    int sqroot = (int)sqrt((double)num);
    for (int i = 1; i <= sqroot; i++){
        if (num%i == 0){
            return false;
        }
    }
    return true;
}
void gen(int num){
    int counter = 0;
    for (int i = 2; i <= num; i++){
        if (isPrime(i)){
            counter++;
            printf("%d : %d
", counter, i);
        }
    }
}
int main(void)
{
    int x;
    scanf("%d", &x);
    gen(x);
    return 0;
}
question from:https://stackoverflow.com/questions/65942164/boolean-value-isnt-working-properly-in-c-programming-language

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Your for loop starts at i = 1 and hence the test (num % i == 0) always evaluates to true at the first iteration. Just start with i = 2


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...