Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
问题解释及;错误检测(假设我要打印3-8之间的素数) #包括 int main(){ int i,j,c; 因为(i=3;i_C_Loops - Fatal编程技术网

问题解释及;错误检测(假设我要打印3-8之间的素数) #包括 int main(){ int i,j,c; 因为(i=3;i

问题解释及;错误检测(假设我要打印3-8之间的素数) #包括 int main(){ int i,j,c; 因为(i=3;i,c,loops,C,Loops,也许这就是你想要的 #include<stdio.h> int main() { int i, j, c; for (i = 3; i <= 8; i++) { for (j = i + 1; j < 8; j++) if (i % j != 0) { } } for (i = 3; i <= 8; i++) { for (j = i + 1; j

也许这就是你想要的

#include<stdio.h>

int main() {
    int i, j, c;
    for (i = 3; i <= 8; i++) {
        for (j = i + 1; j < 8; j++)
            if (i % j != 0) {

            }

    }
    for (i = 3; i <= 8; i++) {

        for (j = i + 1; j < 8; j++) {
            printf("%d\n", i);

        }
    }

    return 0;
}
#包括
int main(){
int i,j,c;

对于(i=3;i解释:

#include<stdio.h>

int main() {
    int i, j, c;
    for (i = 3; i <= 8; i++) {
        bool prime = true;
        for (j = 2; j < i-1; j++) 
            if (i % j == 0) 
                prime = false;
        if (prime)printf("%d\n", i);
    }

    return 0;
}
i-loop检查从3到8的数字

j循环应该运行从2到i的数字,并检查这些数字中是否有任何一个是i的因子。如果是,则i不是素数

算法中的问题:

#include<stdio.h>

int main() {
    int i, j, c;
    for (i = 3; i <= 8; i++) {
        bool prime = true;
        for (j = 2; j < i-1; j++) 
            if (i % j == 0) 
                prime = false;
        if (prime)printf("%d\n", i);
    }

    return 0;
}
  • 你的i形圈是正确的,但是你的j形圈是徒劳的

  • 您应该检查
    j
    是否是
    i
    的一个因子,以确定
    i
    是否不是质数。因此您应该将if语句更改为
    if(i%j==0)
    。您还应该有一个标志来存储此信息

  • 解决方案:

    #include<stdio.h>
    
    int main() {
        int i, j, c;
        for (i = 3; i <= 8; i++) {
            bool prime = true;
            for (j = 2; j < i-1; j++) 
                if (i % j == 0) 
                    prime = false;
            if (prime)printf("%d\n", i);
        }
    
        return 0;
    }
    
    //检查i是否为素数的标志
    内部互质;
    //运行从3到8的数字
    
    对于(i=3;i Rizwan Alam Shaon,问题是什么?如果
    j
    总是大于
    i
    ,那么你需要将
    j
    除以
    i
    。代码本身没有“bug”,只是没有什么用处。@WeatherVane代码没有意义。因此不清楚该解释什么。:)这段代码给人的印象是随机复制的代码行,就像在短暂看到正确的解决方案后编写的东西。打印几个素数的任务也可能是一项家庭作业。请理解在这种情况下“为什么它不能打印3-8之间的素数?”因为一个问题没有关注你在尝试这个过程中遇到的特定的编程问题。请描述所显示的代码是如何映射到你如何使用钢笔和纸来找到素数的理解的。这应该已经帮助了,否则它是获得帮助的基础。是的,这很可能正好是OP想要的。ng,可以作为家庭作业交上来。但这不是一个好答案。因为它缺乏解释。是否给出代码解决方案(解释或不解释)是一个实际有用的答案是一个意见问题。在我看来不是。@ArdentCoder:C89已经有30多年的历史了。
    bool
    是在C99中引入的,它已经有20多年的历史了。使用
    int isPrime=1;
    ,你在答案中所做的,可以说比
    bool isPrime=true;
    可读性差得多。此外,挑剔about
    stdbool.h
    有点奇怪,因为你的答案也是无效的C。它不包括
    。它既不声明
    i
    也不声明
    j
    。它甚至不包含函数。@Groo我的答案是为了更正OP代码的逻辑部分,其中包含必要的头和声明。我在我的a中提到过它回答:“你的算法中的问题”。如果我重新声明了那些
    I
    j
    ,那将是一个错误。如果你提供了一个(很好地解释)代码解决方案,然后请不要为任何作为家庭作业提交的人创建陷阱。确保在编译过程中没有警告或错误。即,它应该基本上符合a的规则。此外,如果您不知道,请查看