网站建设资讯

NEWS

网站建设资讯

atos函数c语言 c语言atoi函数

用筛法求1-1000之间的素数

筛选法的规律:(以1~1000内的素数少选为例)

耀州网站建设公司成都创新互联,耀州网站设计制作,有大型网站制作公司丰富经验。已为耀州成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的耀州做网站的公司定做!

我们知道素数的定义:只能被1和他本身整除的是素数,那这样看的话,只要有一个既不是1又不是这个数本身的数把这个数整除了,就可以说明这个数不是素数了。例如 5是素数,因为5只能被5和1整除,6不是素数,,因为6除了能被1和6整除,还能被2和3整除。试想一下,我们要判断6是不是素数,需不需要循环到6的时候才进行判断呢,不需要,因为2和3都是他的因子,我们在循环到2的时候,找到2的所有倍数,如4,6,8,10,12等等,这些数都至少有2这个因子,因此可以判定它们都不是素数了。而由于4是2的倍数,在循环到2的时候已经判定4不是素数了,所以我们不需要在挖掉4的倍数了,直接跳过4,来到5,挖掉5的所有倍数,然后是6,6在值钱是2的倍数被挖掉了,所以跳过6,来到7.....一直循环到最后一个数字为止,这个时候就是上面7步中说的,剩下没有被挖掉的(挖掉的含义就是把这个数置0)也就是非0的数字就是素数了。

不知道我说的你能不能听懂。希望对你有帮助吧。

c语言,输入一个a【3】【3】矩阵,将数字和例如,输入的数为1、2、3、4、5,求出1+2345

我发现你不是a[3][3]的矩阵,你应该是一维的矩阵吧。

如果你入门了,也许这个代码更适合你。如果不懂,追问!

#includestdio.h

#includestdlib.h

#define n 5

char* atos(int*a,int len,char*s)

{

int i;

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

s[i]='0'+a[i];

s[i]=0;

return s;

}

int main()

{

int i;

int a[]={1,2,3,4,5},b[n-1];

char s1[n+1],s2[n+1];

for(i=0;in-1;i++)

{

b[i]=atoi(atos(a,i+1,s1))+atoi(atos(a+i+1,n-i-1,s2));

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

}

return 0;

}

(c语言)求快速算素数的方法。

//规模较大时,筛选法确实比较快

#includeiostream

#includecmath

using namespace std;

#define MAX_NUM 1000000

#define MAX_N 10000000

int main()

{

int *P;

bool *B;

int M, N, i, j, t, sqrtN;

bool flag;

P = (int *)malloc(sizeof(int)* MAX_NUM);

B = (bool*)malloc(sizeof(int)* MAX_N);

for (i=0;iMAX_N;i++)B[i]=true;

B[0] = B[1] = false;

P[0]=2;//第一个素数

P[1]=3;

M=2;//数组中素数个数

sqrtN = (int)sqrt(MAX_N);

for (N=3;NsqrtN;N+=2)//偶数不可能时素数,跳过

{

i=1;

flag = true;

t=(int)sqrt(N) ;

while (P[i]=t)

{

if (N%P[i]==0)

{

flag = false;

break;

}

i++;

}

if (flag)

{

P[M++]=N;

if (MMAX_NUM)

{

cout"too large"endl;

exit(0);

}

}

}

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

{

for (j=2;j=MAX_N/P[i];j++)

{

B[j*P[i]]=false;

}

}

t=0;j=0;

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

{

if (B[i]==true)

{

P[j++]=i;

t++;

}

}

return 0;

}

筛法求素数??

主要问题出在erat_sieve函数的n=n/2;这个语句上了,本来要计算的是200。结果你在这里把n折半,结果就再后面m=sqrt(n);m的取值就不是根号下200而是100结果10以上的素数就没有做为因子用上,所以直接导致121和169没有被清除出来。

你这个方法不是筛法吧,筛法是不用除法了求模运算的。我写个筛法你看看

#include "stdio.h"

#include "math.h"

int main()

{

char prime[10000]={0};

int i,j,n,m;

for(i=3;i10000;i+=2) prime[i]=1;

prime[2]=1;

printf("输入整数n(1~n):");

scanf("%d",n);

m=sqrt(n);

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

{

for(j=i*2;jn;j+=i)

{

if(prime[j]) prime[j]=0;

}

}

j=0;

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

{

if(prime[i])

{

printf("%3d ",i);

j++;

if(j%10==0) printf("\n");

}

}

printf("\n%3d ",j);

}

把字符串类型变换成整数类型的函数是 ( )。

atoi 功能: 把字符串转换成整型数

最后一个字母i代表他的类型integer

s string

f float


当前名称:atos函数c语言 c语言atoi函数
网址分享:http://cdweb.net/article/hgjjoh.html