c语言中用筛选法求素数 C语言编程:用筛选法求100之内的素数,

\u5728C\u8bed\u8a00\u4e2d\uff0c\u7528\u7b5b\u9009\u6cd5\u6c42100\u4e4b\u5185\u7684\u7d20\u6570\uff1f\u7528\u591a\u79cd\u65b9\u6cd5\u6c42\uff0c\u8bf7\u9644\u5e26\u6d41\u7a0b\u56fe\uff0c\u8c22\u8c22

\u6240\u8c13\u7b5b\u9009\u6cd5\uff0c\u5c31\u662f\u6bcf\u4e00\u6b21\u90fd\u7b5b\u53bb\u4e0d\u662f\u7d20\u6570\u7684\u6570\uff0c\u6bd4\u5982\u8bf4\u73b0\u5728\u6211\u4eec\u77e5\u90532\u662f\u7d20\u6570\uff0c\u90a3\u4e484,6,8\uff0c\u2026\u2026\u5c31\u5168\u6807\u8bb0\u4e3a\u975e\u7d20\u6570\uff0c\u73b0\u5728\u4e0b\u4e00\u4e2a\u6570\u662f3,3\u6ca1\u6709\u88ab\u6807\u8bb0\uff0c\u6240\u4ee5\u5b83\u662f\u7d20\u6570\uff0c\u5e76\u4e14\u540c\u65f6\u5c066,9,12\uff0c\u2026\u2026\u5168\u90e8\u6807\u8bb0\u4e3a\u975e\u7d20\u6570\uff0c\u518d\u4e00\u4e2a\u6570\u662f4\uff0c\u5df2\u7ecf\u88ab\u6807\u8bb0\u8fc7\uff0c5\u6ca1\u88ab\u6807\u8bb0\uff0c\u4e8e\u662f5\u662f\u7d20\u6570\uff0c\u540c\u65f6\u628a\u6240\u67095\u7684\u500d\u6570\u6807\u8bb0\u2026\u2026
\u4ee3\u7801\u5982\u4e0b:

#include

// end with -1
void findPrime(int range,int *primeArray);
// \u4ea7\u751f\u4e00\u4e9b\u6807\u8bb0\uff0c\u6807\u8bb0\u8be5\u5904\u503c\u662f\u5426\u4e3a\u7d20\u6570
void findPrimeLabel(int range,int *labelArray);

int main()
{
// \u58f0\u660e\u6700\u5927\u8303\u56f4
int range;
// \u58f0\u660e\u4e00\u4e2a\u53ef\u4ee5\u5bb9\u7eb3\u6bd4\u8f83\u591a\u7d20\u6570\u7684\u6570\u7ec4
int primeArray[100];
int i;
printf("Input the max range:\n");
scanf("%d",&range);
// \u5047\u8bbe\u5de5\u4f5c\u6b63\u5e38\uff0c\u90a3\u4e48primeArray\u6240\u6307\u5411\u7684\u5c31\u662f\u4e00\u7cfb\u5217\u7d20\u6570\u7684\u6307\u9488\uff0c\u4e14\u6700\u540e-1\u7ed3\u675f
findPrime(range,primeArray);
for(i=0; i<100; i++)
{
if(primeArray[i]==-1)
{
break;
}
else
{
printf("%d\n",primeArray[i]);
}
}
return 0;
}

void findPrime(int range,int *primeArray)
{
// algorithm:
// \u6700\u5c0f\u7684\u7d20\u6570\u662f2
// \u4ece\u4e4b\u540e\u5f00\u59cb\uff0c\u6bcf\u6b21\u9047\u5230\u662f\u500d\u6570\u7684\u90fd\u5220\u6389
int *labelArray=new int[range];
int i,j=0;
// \u83b7\u5f97\u6807\u8bb0\u6570\u7ec4
findPrimeLabel(range,labelArray);
for(i=0; i<=range; i++)
{
// \u5982\u679c\u6807\u8bb0\u662f\u7d20\u6570\uff0c\u5c31\u6dfb\u52a0\u5230\u6570\u7ec4\u4e2d\u53bb
if(labelArray[i]==1)
{
primeArray[j]=i;
j++;
}
}
// \u6dfb\u52a0\u7ed3\u675f\u6807\u8bc6\u7b26-1
primeArray[j]=-1;
delete [] labelArray;
}

void findPrimeLabel(int range,int *labelArray)
{
int i,j=2;
labelArray[0]=0;
labelArray[1]=0;
// \u521d\u59cb\u5316
for(i=2;i<=range;i++)
{
labelArray[i]=1;
}
for(i=2; i<=range; i++)
{
// \u5982\u679c\u4ecd\u7136\u662f1\uff0c\u8bf4\u660e\u6ca1\u88ab\u6807\u8bb0\uff0c\u5219\u8fd9\u662f\u4e00\u4e2a\u7d20\u6570
if(labelArray[i]==1)
{
// \u91c7\u7528\u4e00\u4e2awhile\u5faa\u73af\uff0c\u5c06\u4ece2\u5f00\u59cb\u7684\u500d\u6570\u5168\u90e8\u6807\u8bb0\u4e3a0
while(i*j<=range)
{
labelArray[i*j]=0;
j++;
}
j=2;
}
}
}

\u6e90\u4ee3\u7801\u5982\u4e0b\uff1a
#include
#include
int main()
{
int a, b, i, flag;
printf("\u8f93\u5165\u4e24\u4e2a\u6574\u6570: ");
scanf("%d %d", &a, &b);
printf("%d\u4e0e%d\u4e4b\u95f4\u7684\u7d20\u6570\u4e3a: ", a, b);
while(a<b)
{
flag=0;
for(i=2; i<=sqrt(a); i++)
{
if(a%i==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%d ", a);
a++;
}
return 0;
}

\u6269\u5c55\u8d44\u6599
\u4e00\u4e2a\u5076\u6570\u603b\u80fd\u8868\u793a\u4e3a\u4e24\u4e2a\u7d20\u6570\u4e4b\u548c\u7684\u6e90\u4ee3\u7801\u5982\u4e0b\uff1a
#include "stdio.h"
#include "math.h"
main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2)
{
for(c=2;c<=sqrt(b);c++)
if(b%c==0) break;
if(c>sqrt(b))
d=a-b;
else
break;
for(c=2;c<=sqrt(d);c++)
if(d%c==0)
break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
}
}
for(int i=5;i<=sqrt(x);i+=6)
if(x%i==0||x%(i+2)==0)
{
printf("%d\u4e0d\u662f\u7d20\u6570",x);
return 0;
}
printf("%d\u662f\u7d20\u6570",x);
return 0;
}

一个质数。在大于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 = 10;I < = n;我+ +)

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

返回0;



main(){
int
i,j,h,k=0,p[100]={0},a[200]={0};
for(i=1;i<200;i++)a[i]=i+1;/*将所有候选数放入筛中*/
for(i=0;i<200;i++)
for(j=0;j<200;j++)
if(a[i]!=0){
p[k]=a[i];/*将最小数放入素数集合p中*/
for(h=k;h<200;h++)
if(a[h]%p[k]==0)a[h]=0;/*将这个素数的倍数从筛中删去*/
k++;}
i=0;
printf("primes:");
while(p[i]!=0){printf("%5d",p[i]);i++;}/*打印出所有素数*/
}

main(){
int i,j,h,k=0,p[100]={0},a[200]={0};
for(i=1;i<200;i++)a[i]=i+1;/*将所有候选数放入筛中*/
for(i=0;i<200;i++)
for(j=0;j<200;j++)
if(a[i]!=0){
p[k]=a[i];/*将最小数放入素数集合p中*/
for(h=k;h<200;h++)
if(a[h]%p[k]==0)a[h]=0;/*将这个素数的倍数从筛中删去*/
k++;}
i=0;
printf("primes:");
while(p[i]!=0){printf("%5d",p[i]);i++;}/*打印出所有素数*/
}

  • 鐢ㄧ瓫閫夋硶姹100涔嬪唴鐨绱犳暟C璇█ 浠ュ強姣忎竴姝ョ殑鎰忔 涓昏鏄剰鎬漘鐧惧害鐭 ...
    绛旓細//璇存槑n闄1鍜屾湰韬娌℃湁鍏朵粬绾︽暟锛屾墍浠ユ槸绱犳暟}void main(){ int i; for(i=1;i<=100;i++) //1..100涓涓竴涓绛涢 { if(isSushu(i)) //濡傛灉杩斿洖鍊兼槸1锛屽垯璇ユ暟鏄礌鏁帮紝杈撳嚭 printf("%d\n",i); }} ...
  • C璇█缂栫▼:鐢ㄧ瓫閫夋硶姹100涔嬪唴鐨绱犳暟,
    绛旓細C璇█缂栫▼:鐢ㄧ瓫閫夋硶姹100涔嬪唴鐨绱犳暟, #include<stdio.h>#include<math.h>voidmain(){inti,t,m;for(m=1;m<=100;m=m+2){t=sqrt(m);for(i=2;i<=t;i++)if(m%i==0)break;if(i>t)printf("%disaprimenumber.\n",m);elseprintf("%... #include <stdio.h>#include <math.h>void main(...
  • 鐢ㄧ瓫閫夋硶绛涢2鍒100鐨绱犳暟
    绛旓細//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int main(void){ char p[100]={0},i,j; for(i=2;i<100;p[i]=i++); for(i=2;i<=10;i++) if(p[i]) for(j=i+1;j<100;j++) if(p[j] && p[j]%p[i]==0) ...
  • c璇█浣滀笟 鐢ㄧ瓫閫夋硶姹N涔嬪唴鐨绱犳暟銆(N灏忎簬绛変簬100)銆
    绛旓細include<stdio.h> define MAXNUM 100 int main(){ int output[MAXNUM],num=0,n,i,j;scanf("%d",&n);for(i=2;i<=n;i++){ for(j=2;j<=i-1;j++){ if(i%j==0)break;} if(j==i){ output[num++]=i;} } printf("num=%d\n",num);for(i=0;i<num;i++){ printf(...
  • C璇█缂栫▼:鐢ㄧ瓫閫夋硶姹100涔嬪唴鐨绱犳暟,瑕佹眰姣忛殧10琛岃緭鍑恒傛庝箞鍐?_鐧 ...
    绛旓細//璇绱犳暟鐨姹傛硶锛屾瘮绗竴绉嶆棤璁烘槸鍦ㄦ椂闂村鏉傚害杩樻槸绌洪棿澶嶆潅搴︿笂閮借绠鍗曠殑鐨勫 //绱犳暟锛氬叾瀹炲伓鏁颁腑闄や簡2浠ュ閮戒笉鏄礌鏁帮紝鍥犳鍙瘮杈冨鏁板嵆鍙紱褰撳垽鏂竴涓暟鏄笉鏄礌鏁版椂锛//寰寰涓嶅繀绠楁槸鍚﹁兘琚2鈥攏-1涓换鎰忎竴涓暟鏁撮櫎 //鍙姣旇緝鏄惁鑳借2鈥攕qrt锛坣锛変腑鐨勪换鎰忎釜鏁版暣闄ゅ嵆鍙紒//褰撹兘琚叾涓箣涓...
  • C璇█ 鐢ㄧ瓫閫夋硶姹500浠ュ唴鐨绱犳暟骞剁粺璁′釜鏁
    绛旓細} } } for(i=1;i<=500;i++){ if(a[i] == 0){ printf("%d ",i);} } //500涓绱犳暟鍑忓幓涓嶆槸绱犳暟鐨勪釜鏁板氨鏄礌鏁扮殑涓暟銆俻rintf("count=",500-count);return 0;} 杩欎釜绋嬪簭鑰楁椂姣旇緝澶氾紝濡傛灉浣犲彧鏄湪瀛C璇█閬囧埌鐨勯棶棰橈紝閭d箞瓒冲浜嗭紝濡傛灉鏄涔犵畻娉曪紝寤鸿鍘荤綉涓婃壘鎵炬洿蹇殑绛涙硶銆
  • c++鎻忚堪娆ф媺绛娉曟眰m鍒皀鐨绱犳暟
    绛旓細鎸夌収浣犵殑瑕佹眰缂栧啓鐨勭敤娆ф媺绛涢夋硶姹浠嶮鍒癗鐨绱犳暟鐨凜++绋嬪簭濡備笅 include<iostream> include<cstring> using namespace std;int main(){ int M,N,cnt=0,count=1,prime[100001];bool vis[100001];memset(vis,false,sizeof(vis));memset(prime,0,sizeof(prime));cin>>M>>N;for(int i=2;i<=...
  • C璇█缂栫▼:鐢ㄧ瓫閫夋硶姹100涔嬪唴鐨绱犳暟,
    绛旓細//璇绱犳暟鐨姹傛硶锛屾瘮绗竴绉嶆棤璁烘槸鍦ㄦ椂闂村鏉傚害杩樻槸绌洪棿澶嶆潅搴︿笂閮借绠鍗曠殑鐨勫 //绱犳暟锛氬叾瀹炲伓鏁颁腑闄や簡2浠ュ閮戒笉鏄礌鏁帮紝鍥犳鍙瘮杈冨鏁板嵆鍙紱褰撳垽鏂竴涓暟鏄笉鏄礌鏁版椂锛//寰寰涓嶅繀绠楁槸鍚﹁兘琚2鈥攏-1涓换鎰忎竴涓暟鏁撮櫎 //鍙姣旇緝鏄惁鑳借2鈥攕qrt锛坣锛変腑鐨勪换鎰忎釜鏁版暣闄ゅ嵆鍙紒//褰撹兘琚叾涓箣涓...
  • 缂栧啓涓娈C璇█绋嬪簭:搴旂敤鏁扮粍骞跺埄鐢绛涢夋硶姹鍑100涔嬪唴鐨绱犳暟銆
    绛旓細include<stdio.h> void main() { int i,j,b,a[100],n;n=0;for ( i=2;i<100;i++ ) { b=1; for ( j=2;j<=i/2;j++ ) if ( i%j==0 ) {b=0;break;} if ( b!=0 ) {a[n]=i;n++;} } for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n");...
  • 鐢ㄧ瓫閫夋硶姹300涔嬪唴鐨勬墍鏈绱犳暟鐢C++璇█
    绛旓細include<iostream>using namespace std;void main() { int i,j,b; for ( i=1;i<=300;i++ ) { b=1; for ( j=2;j<=i/2;j++ ) if ( i%j==0 ) { b=0;break; } if ( b ) cout<<i<<' '; } cout<<endl;} ...
  • 扩展阅读:c语言求1~100所有素数 ... c语言编程筛选法 ... c语言找素数倍数清零 ... 筛法求素数c语言详解 ... c#判断素数 ... 埃氏筛法求素数c语言 ... 折半法判断素数 ... c语编程求100以内素数 ... c语言筛选法100之内的素数 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网