大家好,我是编程新手,我正在阅读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_number
和last_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/