编写C语言程序,求100~200之间所有素数。

作为一名对C语言的初学者,想多编一些程序,但遇到这个问题了,目前学了while、do-while、for循环语句。望能指点迷津,谢谢。

素数就是只能被1和本身整除的数,先定义一个函数用于判断一个数是否是素数,在从100到200依次循环判断,如果是素数则输出。

参考代码:

#include<stdio.h>
int fun(int n){//判断n是否是素数
int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
return 1; 

int main()
{
 int i;
 for(i=100;i<=200;i++)//循环判断
  if(fun(i))
printf("%d ",i);
 return 0;
}
/*
运行结果:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-10
#include<stdio.h>
void main()
{
void outputsushu(int k);
int i;
for(i=100;i<=200;i++)
outputsushu(i);
}
void outputsushu(int k)
{
int w=0,t;
for(t=2;t<=k/2;t++) /*从2判断到k/2个数,你也可以判断到根号k个数,但要用到math.h函数*/
{
if(k%t==0)
w=w++; /*通过定义一个标记,都不能整除,标记不变保持0值,整除了加1,判断最后有没有整除就可以*/
}
if(w==0)
printf("%d\t是素数\n",k);
else
printf("%d\t不是素数\n",k);
}本回答被提问者和网友采纳
第2个回答  2019-04-07
#include<stdio.h>
void
main()
{
void
outputsushu(int
k);
int
i;
for(i=100;i<=200;i++)
outputsushu(i);
}
void
outputsushu(int
k)
{
int
w=0,t;
for(t=2;t<=k/2;t++)
/*从2判断到k/2个数,你也可以判断到
根号
k个数,但要用到math.h
函数
*/
{
if(k%t==0)
w=w++;
/*通过
定义
一个
标记
,都不能整除,标记不变保持0值,整除了加1,判断最后有没有整除就可以*/
}
if(w==0)
printf("%d\t是素数\n",k);
else
printf("%d\t不是素数\n",k);
}
第3个回答  2011-11-19
# include<stdio.h>
# include<math.h>
int main()
{
int i,k,n=0;
for(i=101;i<=200;i+=2)
{
for(k=2;k<=sqrt(i*1.0);k++)
{
if(i%k==0)break;
}
if(k>sqrt(i*1.0))
{
printf("%d ",i);
n++;
}
if(n%10==0)
printf("\n");
}

return 0;
}
第4个回答  2011-11-10
#include<stdio.h>
#include<math.h>
int isprime(int n)
{
int i,k=0,m;
m=sqrt(n);
for(i=2;i<=m;i++)
if(n%i==0)
k++;
if(!k)
return 1;
else
return 0;
}
void main()
{
int i,j=0;
for(i=100;i<200;i++)
if(isprime(i))
{printf("%5d",i);j++;
if(j%5==0)
printf("\n");}
printf("\n");
for(i=2;i<1000;i++)
if(isprime(i)&&isprime(i+2))
{printf("%5d",i);j++;
if(j%5==0)
printf("\n");}
printf("\n");
}