用C语言打印输出100至200之间得全部素数

本人数学较垃圾/恳请高手帮忙看这代码该怎样敲

#include <stdio.h>
int isPrime(int n) /*接收从方函数中来的数*/
{
int i;
for(i=2;i<n;i++)/*从2到n-1,素数是只能被1或者它本身整除,所以没有必要直接到n,n-1就行了
if(n%i==0) /*如果从2到n-1中有一个能整除i,则不为素数*/
return 0; /*直接返回0,如果从2到n-1中有一个能整除i则此数不是素数*/
return 1;/*如果上面IF语句中所有的数都不能整除则返回一表示是素数*/
}
如从2~10,因为10/5=0所以10不是素数
2~11因为11/2~10中任何一个数都不为0,所以是素数

int isPrime(int n) /*接收从方函数中来的数*/
{
int i;
for(i=2;i<n;i++)
{
if(n%i==0)
return 0;
}/*要特别注意这里是一个循环,是一个整体,要上面的N除以从2到N-1R的所有的数都不等于0,也就是说执行到N-1才退出,才执行下面的RETURN 1*/
return 1;
}

for(i=2;i*i<=n;i++)
{
if(n%i==0)
return 0;
}这里是一个块,要这整个循环执行完了,才执行下面的
return 1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-13
#include<stdio.h>
#include<math.h>
bool isprime(int a)
{
int t=(int)sqrt(a+1);//如果写sqrt(a)那么sqrt(4)可能等于1.99999999,取整后是1,所以不妨取sqrt(a+1)
//如果写成for(int i=2;i<=sqrt(a+1);i++)那么每次循环都要判断i<=sqrt(a+1),计算sqrt浪费时间,所以用变量t
for(int i=2;i<=t;i++)
if(a%i==0)return false;
return true;
}
void main()
{
for(int i=100;i<200;i++)
if(isprime(i))
printf("%d\n",i);
}