c语言中用筛选法求素数

c语言中用筛选法求素数,第1张

一个质数。在大于1的自然数中,除1和100整数本身外,不能被任何其他自然数整除的次数。素数在数论中起着重要的作用。

大于1但没有质数通道的数称为合数。1和0既不是质数也不是合数。

通过滤波法得到的100以内质数的源代码如下:

#include"stdio.h"

main()

main()

IntI,j。

对于(I = 2我<99我+ +)

对于(j = 2<我J + +)

If(I%j==0)

打破;

如果(j==I-1)

Printf(“%4d”,I);

扩展资料:

100以内的数字代码如下

包含<bits/stdc++。H >

使用命名空间性病。

Intthesum(Intn)

返回(n/10+n%10%)+(10)(n/10%*(n%10));

Intmain(){

Intn=100;

For (int I = 10I <= n我+ +)

If (sum (I) = = I) cout <<I <<endl

返回0;

源代码如下:

#include <stdio.h>

#include <math.h>

int main()

{

int a, b, i, flag

printf("输入两个整数: ")

scanf("%d %d", &a, &b)

printf("%d与%d之间的素数为: ", a, b)

while(a<b)

{

flag=0

for(i=2i<=sqrt(a)i++)

{

if(a%i==0)

{

flag=1

break

}

}

if(flag==0)

printf("%d ", a)

a++

}

return 0

}

扩展资料

一个偶数总能表示为两个素数之和的源代码如下:

#include "stdio.h"

#include "math.h"

main()

{

int a,b,c,d

scanf("%d",&a)

for(b=3b<=a/2b+=2)

{

for(c=2c<=sqrt(b)c++)

if(b%c==0) break

if(c>sqrt(b))

d=a-b

else

break

for(c=2c<=sqrt(d)c++)

if(d%c==0)

break

if(c>sqrt(d))

printf("%d=%d+%d\n",a,b,d)

}

}

for(int i=5i<=sqrt(x)i+=6)

if(x%i==0||x%(i+2)==0)

{

printf("%d不是素数",x)

return 0

}

printf("%d是素数",x)

return 0

}

既然直接要求源代码,那我就直接贴源代码吧。

#include<cstdio>

#include<iostream>

#include<cstring>

#define maxn 10005

using namespace std

bool vis[maxn]

int prime[maxn]

//素数的线性打表

void Clear()

{

memset(vis,0,sizeof(vis))

int num = 0

vis [1] = 1

//素数倍数全部标记

for(int i = 2i<maxni++)

{

if(!vis[i])

{

prime[++num] = i

}

for(int j = 1j<=num&&i*prime[j]<maxnj++)

{

vis[prime[j]*i] = 1

if(i%prime[j]==0) break//避免重复的出现 例如 5*9 3*15

}

}

}

int main()

{

Clear()

//素数前100个素数

for(int i = 1i<=100i++)

{

printf("%4d",prime[i])

if(i%5==0) printf("\n")

}

return 0

}

用这个方法对素数进行打表虽然很快,但其实并不是最快的。

但楼主只要求这个的话那就只贴这个吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12081407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存