大家好,我是编程新手,我正在阅读Mike Banahan,Declan Brady和Mark Doran(1991)撰写的“ The C Book”,但我在理解练习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);}


如果this_number为3,那么last_prime(也是3)+ 2 = 5是否应该为false,是否应该执行print语句?

谢谢,

缺口

最佳答案

如果this_number为3,那么last_prime(也是3)+ 2 = 5是否应该为false,是否应该执行print语句?


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

this_number为5且last_prime为3时,素数对将再进行两次迭代。此后,last_prime变为5,而this_number移至6。

关于c - 编程新手(C),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35930445/

10-11 02:54