编程新手(C)

编程新手(C),c,C,大家好,我是编程新手,我正在读迈克·巴纳汉、德克兰·布雷迪和马克·多兰1991年写的C语言书,我在理解练习1.2时遇到了困难。 问题是使用示例1.2作为模式,编写一个程序来打印素数对-一对相差2的素数,例如11和13,29和31。 我继续在书的后面查看答案,我理解大部分代码,但不理解结尾 #include <stdio.h> #include <stdlib.h> main(){ int this_number, divisor, not_prime; i

大家好,我是编程新手,我正在读迈克·巴纳汉、德克兰·布雷迪和马克·多兰1991年写的C语言书,我在理解练习1.2时遇到了困难。 问题是使用示例1.2作为模式,编写一个程序来打印素数对-一对相差2的素数,例如11和13,29和31。 我继续在书的后面查看答案,我理解大部分代码,但不理解结尾

#include <stdio.h>
#include <stdlib.h>
main(){
    int this_number, divisor, not_prime;
    int last_prime;
    this_number = 3;
    last_prime = 3;
    printf("1, 3 is a prime pair\n");
    while(this_number < 10000){
        divisor = this_number /2;
        not_prime = 0;
        while(divisor >1){
            if(this_number % divisor == 0){
                not_prime = 1;
                divisor = 0;}
            else divisor = divisor -1;}
            if(not_prime == 0){
                if(this_number == last_prime +2)
                printf("%d, %d is a prime pair\n", last_prime, this_number);
                last_prime = this_number;}
            this_number= this_number +1;}
        exit(EXIT_SUCCESS);}
如果这个_数是3,那么不应该持续_素数,也就是3+2=5,这将是错误的,print语句不应该执行

谢谢

尼克

如果这个_数是3,那么不应该持续_素数,也就是3+2=5,这将是错误的,print语句不应该执行

是的,当程序启动时,这个数和最后一个素数是3。该语句将为false,并且不会执行,因为3不是5。这是正确的,因为它在寻找素数对,比如3和5,5和7,11和13。3和3不是素数对


当这个素数为5,最后一个素数为3时,一个素数对将在另外两个迭代中出现。在这之后,最后一个素数将变为5,这个素数将变为6。

如果您是编程新手,我建议您先学习另一种语言,如Python或Ruby,然后回到C。这将允许您学习基本的编程逻辑和语法,而不必同时处理非常复杂的内存管理问题和C有趣的字符串处理;是吗?顺便说一下,我投票决定结束这个问题,因为这个问题不包含理解它所需的代码。链接到代码的屏幕截图是不可接受的替代品。不要将代码作为图像发布。请直接在问题中以文本形式发布您的代码。@ruakh yea它在程序末尾添加了1到3,以便它为您循环输入代码,很抱歉我理解了,谢谢!因此,当这个数达到11时,程序将跳过下一个printf语句,因为这个数是11,最后一个素数7+2是9。然而,last_prime=此_数将11更改为下一个最后的_数,因此当此_数达到13时,printfthis_数==last_prime+2语句变为true并打印。