您的位置:

c语言产生质数数组文档介绍内容,输出质数c语言程序

本文目录一览:

C语言 质数 怎么做啊

#includestdio.h

#includemath.h

int is_prime(int tar){//判断是否为素数

    int i = 2;

int end = sqrt((float)tar);

    while(i = end){

        if(tar % i == 0)

            return 0;

        i++;

    }

    return 1;

}

int main(){

int num;

scanf("%d", num);

if(is_prime(num)==1)

printf("Y\n");

else

printf("N\n");

return 0;

}

输出100以内的质数,用c语言编写

#includestdio.h

int main()

{

int i,j;

int count=0;

for(i=2;i100;i++)

{

for(j=2;j=i/2;j++)

if(i%j==0)//如果i能被j整除  就不是质数  退出循环

break;

if(ji/2)

{

count++;

printf("%-3d",i);

if(count%5==0)//当每一行有5个数时  换行

printf("\n");

}

}

return 0;

}

for(j=2;j=i/2;j++)中的 j=i/2是表示  从j=2开始遍历到j=i/2  看看2~i/2中能否整除i

如果都不能  说明i是质数(也就是ji/2)

如果有1个及以上能整除i  说明i不是质数

for()

{

}

//for循环结束之后  j的值是大于i/2的  因为for循环的条件是:j=i/2

//因此  当ji/2时  for循环结束

if(ji/2)

这里当且仅当2~i/2都不能整除i时   也就是ji/2  才说明i是质数

参考资料

输出100以内的质数,用c语言如何编写?.百度知道[引用时间2017-12-25]

C语言的质数算法求教!

比如一个数n,比他小的质数有{2,3,5,7,11,13}。怎么判断n是否质数?

n只要除以{2,3,5,7,11,13}里的所有数,都除不尽,那么n就也是质数了,对吧。

而实际上,这个序列可以缩小。n只要除以这个序列里面,所有比根号下n小的质数,都除不尽,那么n就是质数了。因为如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。

例如21,它可以除尽7,而它同样可以除尽3。所以判断21是否质数,只需要判断21是否可以除尽2和3就可以了。5和7和11就不需要判断了。

所以for(i=1;counter++,prime[i]*prime[i]=no;i++),就是说这个素数的平方达到了要判断的no的时候就退出,也就是判断所有比no的根号更小的素数。

C语言求素数数组

#include stdlib.h

#include stdio.h

void readwriteDat();

void num(int m, int k, int *xx)

{

int n=0,i,b;

while(m++)/*死循环*/

{

for(i=2;im;i++)

{

if(!(m%i))

{b=0;break;}

else b=1;

}

if(b) xx[n++]=m;/*if(n==k-1) break;

}

}

int main()

{

int m, n, xx[1000];

printf("\nPlease enter two integers:");

scanf("%d%d", m, n);

num(m, n, xx);

for (m=0; mn; m++)

printf("%d ", xx[m]);

printf("\n");

readwriteDat();

system("pause");

return 0;

}

void readwriteDat()

{

int m, n, xx[1000], i;

FILE *rf, *wf;

rf = fopen("in.dat", "r");

wf = fopen("out.dat", "w");

for (i=0; i10; i++)

{

fscanf(rf, "%d %d", m, n);

num(m, n, xx);

for (m=0; mn; m++)

fprintf(wf, "%d ", xx[m]);

fprintf(wf, "\n");

}

fclose(rf);

fclose(wf);

}

求一个大于m且仅靠m的k个素数存入数组xx传回,不知哪里出错,除了num函数,其他都是题目给的

C语言如何实现质数输出

代码如下:

/*

* 输出 1~20 之间的质数

*/

#include stdio.h

#include math.h

//判断一整数是否为质数

int isprime(int n)

{

int i;

int up;

int ret = 1;

up = sqrt(n);

for (i=2; i=up; i++) {

if (n%i==0) {

ret = 0;

break;

}

}

return ret;

}

//主函数

int main()

{

int n;

printf("1~20 之间的质数有:");

for (n=2; n20; n++) {

if (isprime(n))

printf("%d ", n);

}

printf("\n");

return 0;

}

运行程序,输出如下:

1~20 之间的质数有:2 3 5 7 11 13 17 19

C语言 素数 数组

if(i%j==0)下面的代码用大括号括起来,最后一个for语句中,

for(i=0;i=count;i++)改成for(i=0;icount;i++),代码改为如下:

#include stdio.h

void main()

{

    int m,i,k,j,a[100],*p=a,count=0;

    printf("Please input a number:");

    scanf("%d",m);

    for(i=2;i=m;i++)

        for(j=2;ji;j++)

        {

            if(i%j==0)

            {

                *p=i;

                p++;

                count++;

                break;

            }

        }

    for(i=0;icount;i++)

        printf("%d ",a[i]);

}