【发布时间】:2018-05-11 11:56:57
【问题描述】:
我遇到了一个程序,可以打印 1 到 n 之间的所有素数,其中“n”是用户提供的值。它使用了 for 循环。程序如下-
#include <stdio.h>
int main()
{
int i, j, end, isPrime; // isPrime is used as flag variable
/* Input upper limit to print prime */
printf("Find prime numbers between 1 to : ");
scanf("%d", &end);
printf("All prime numbers between 1 to %d are:\n", end);
/* Find all Prime numbers between 1 to end */
for(i=2; i<=end; i++)
{
isPrime = 1;
for(j=2; j<=i/2; j++)
{
if(i%j==0)
isPrime = 0;
}
if(isPrime==1)
{
printf("%4d", i);
}
}
return 0;
}
我非常理解上面的代码。但只是为了测试我的知识,我尝试使用 do 循环编写相同的程序。结果不是很好。我通过书籍和互联网搜索找到一个程序,他们使用 do 循环计算素数直到 n。但是一个也找不到。我想知道它是否可能。为了展示我的努力,我把我制作的代码放在下面 -
#include <stdio.h>
main()
{
int i, j, n, isPrime;
printf("Enter n\n");
scanf ("%d", &n);
i = 2;
do
{
do
{
j = 2;
if (i%j == 0)
isPrime = 0;
else
{
isPrime = 1;
printf ("%d", i);
}
j = j+1;
}
while (j <= i/2);
i = i+1;
}
while (i <= n);
}
【问题讨论】: