C语言,求1到1000的质数

如题所述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*****************************************************************
*本程序用来计算1000内质数有哪些及一共有哪些。
*
*知识点:什么是质数?及只能被本身和1整除的整数。
*
*时间:2018.10.22
*****************************************************************/
int main(void)
{
int i,j,result = 0,sum = 0; //i-循环变量和被判断数 j-循环变量和判断数 result-验证是否为质数的返回值 sum-质数总量计数
for (i = 2;i <= 1000;i++) //第一个循环用来取出被判断数 从2开始到1000
{
for (j = 2; j <= sqrt(i) + 1;j++) //第二个循环是用来判断这个数是否为质数并返回,从2开始至被判断数开根后+1. sqrt(i)后面不+1 会把质数2 3丢掉
{
if (i%j == 0 && i != j) //如果被判断数用2-被判断数来取余,如果余数为0 且不是被自已整除那么这个数一定不是质量直接返回
{
result = 0; //判断出是质数后返回前必须给返回值赋0值,0代表非质数 1代表质数
break;
}
result = 1;
}
if (result == 1) //如果此数为质数 质数总量+1后并打印 把result返回值初始化准备下一个循环判断。
{
sum++;
printf("第%d个质数:%d \n",sum,i);
result = 0;
}
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-12

#include<stdio.h>

#include<math.h>


void primeNumber(int n)

{

  int i,j;

  int flag=1;

  for(i=2;i<n+1;i++)

    {

      flag=1;

      for(j=2;j<=sqrt(i);j++)

{

 if((i%j) == 0)

   {

     flag=0;

     break;

   }

}

      if(flag==1)

printf("%d   ",i);

    }

}


void main()

{

  primeNumber(1000);

}


本回答被网友采纳
第2个回答  2013-12-13
#include <stdio.h>
#define N 1000
int main()
{
int n,i,flag;
printf("1 2 3 ");
for (n=4; n <= N; ++n)
{
flag=1;
for ( i = 2; i <= ( n/2 + 1 ); ++i)
if (n%i == 0 ) {
flag=0;break;
}
if (flag) printf ("%d ",n);
}
return 0;
}
第3个回答  2019-08-04
1、缺一个#include"stdio.h";
2、里面有汉语标点符号,如if
(a%i==0)(这个是汉语的),for(a=2;a<=1000;a++)(;是汉语的)
3、我的环境稍有不同,是devc++,修改粘贴如下:
#include
#include"stdio.h"
int
main()
{
int
a,i;
printf("素数:\n");
for(a=2;a<=1000;a++)
{
for
(i=2;i<=(a-1);i++)
{if(a%i==0)
break;}
if
(i>=a)
{
printf("%d\n",a);
}
}
getchar();
return
0;
}
相似回答