【发布时间】:2014-02-27 07:33:51
【问题描述】:
一个朋友给了我这个代码来找到从 1 到 40 的素数
#include <stdio.h>
#include <conio.h>
void main(void)
{
clrscr();
//print prime numbers from 1-40
int i, j;
int factor = 0; //this will be 1 if a factor is found
//otherwise 0
//so factor = 1 means not a prime number
printf("Prime numbers from 1 to 40 are: ");
for (i = 1; i < 41; i++)
{
for (j = 2; j <= (i / 2); j++)
{
if (factor == 0)
{
if (i % j == 0)
factor = 1;
else
factor = 0;
}
}
if (factor != 1)
{
printf("%d ", i);
}
factor = 0;
}
getch();
}
我没有得到循环的第二部分..为什么 j 以 2 开头,为什么它小于 (i / 2) 而不是 i?
谢谢。
【问题讨论】:
-
请注意,即使您找到了一个因子,您也会循环到上限。如果您在找到一个循环时打破循环,效率会更高:使用
break或j <= (i/2) && !factor