【发布时间】:2020-03-24 09:37:15
【问题描述】:
代码如下:
#include<stdio.h>
void main() {
int num1, num2, num3, fac1 = 0, fac2 = 0, fac3 = 0, i;
clrscr();
for (num1 = 5; num1 < 100; num1 = num1 + 1) {
for (i = 1; i <= num1; i++) {
if (num1 % i == 0) {
fac1 = fac1 + 1;
}
}
num2 = num1 - 2;
for (i = 1; i <= num2; i++) {
if (num2 % i == 0) {
fac2 = fac2 + 1;
}
}
num3 = num1 + 2;
for (i = 1; i <= num3; i++) {
if (num3 % i == 0) {
fac3 = fac3 + 1;
}
}
if (fac1 <= 2 && fac2 <= 2) {
printf("%d and %d are twin prime numbers\n", num1, num2);
}
if (fac1 <= 2 && fac3 <= 2) {
printf("%d and %d are twin prime numbers\n", num1, num3);
}
}
getch();
}
目标是打印双素数,在这种情况下为 100,但当我从 5 开始时,我只能得到这个输出 5和3是孪生素数 5和7是孪生素数
【问题讨论】:
-
您需要为每次迭代(在外循环内)重置计数器
fac1、fac2、fac3。