当前位置:首页 » 编程语言 » c语言求n以内的素数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求n以内的素数

发布时间: 2022-04-13 09:04:20

c语言:用数组求1~n内所以素数

代码资料:

#include "stdio.h"

#include <stdlib.h>

int main(int argc,char *argv[]){

int i,j,n;

char *p;

printf("Enter n(int n>0)... n=");

if(scanf("%d",&n)!=1 || n<1){

printf("Input error, exit... ");

return 0;

}

if((p=(char *)malloc(++n))==NULL){

printf("Application memory failure... ");

return 0;

}

for(p[0]=p[1]=0,p[2]=1,i=3;i<n;p[i++] = i&1 ? 1 : 0);

for(i=3;i<n;i++)

if(p[i])

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

if(p[j] && j%i==0)

p[j]=0;

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

if(p[i])

printf("%d ",i);

free(p);

printf(" ");

return 0;

}

⑵ C语言输入一个整数数 N 求0-N内的素数

在你的第二个for循环中a<=i,这样如果i=3,a=3时,i%a==0成立,没有输出,另外,不应该每次判断玩都输出,例如i=7,a分别等于2、3、4、5、6,应该都判断除不尽才证明i是素数
下面是我的代码:
#include<stdio.h>
int main()
{
int a,i,n;
scanf("%d",&n);
for(i=3;i<=n;i++)
{
for(a=2;a<i;a++)
{
if(i%a==0&&a!=i)
break;
}
if(a==i)
printf("%5d",i);
}
return 1;
}

⑶ c语言用筛法求之N内的素数.

错误相当的多

#include<stdio.h>
intmain()
{
intn,i,j,k,t,a,b,s[100];//最多只能存100个素数。有说n的最大值吗?如果n最大超过546这里会出错
while(scanf("%d",&n)!=EOF)
{
t=0;
if(n==2)
printf("2 ");
else
{
for(j=2;j<n;j++)
{
b=0;//每次标志b要初始化一下不然判断会出错
for(i=2;i<j;i++)
{
a=j%i;
if(a==0)
{
b=1;
break;
}
}
if(b!=1)
{
s[t]=j;
t++;
}
}
for(k=0;k<t;k++)//k从0到t-1
{
printf("%d ",s[k]);//用%d打印s[k]而不是s[t]
}
}

}
return0;
}


而且怀疑算法用错了。

不知道你们老师告诉的筛法是什么样子的 我的理解应该用素数筛才对

⑷ c语言求1到n的素数(不要超时)

这个应该是最快的方式了 如果还超时 那么就无解了

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidinit(char*map,intmax)
{
inti,j;
memset(map,0,max);
for(i=2;i<=max;i++)
{
if(map[i])continue;
for(j=i*2;j<=max;j+=i)
map[j]=1;
}
}

intmain()
{
intn;
char*map;
inti,j;
printf("inputmaxnumbern ");
scanf("%d",&n);
map=malloc(n);
if(map==NULL)
{
printf("notenoughmemory ");
return-1;
}
init(map,n);
printf("primenumberslistfrom1to%d ",n);
for(i=2,j=0;i<n;i++)
{
if(!map[i])
{
printf("%d",i);
if(++j%10==0)printf(" ");
}
}
printf(" ");
return0;
}

⑸ 求N之内的素数,c语言

include long fun(int n){ int x; int y; int k; long accumulate=1; for(x=2;x<=n;x++){ k=1; for(y=2;y

⑹ C语言,请设计一个程序,找出N以内的素数.

#include<stdio.h>
#include<string.h>
main( )
{
int i,j,n,a[ 500 ],t=0;
scanf( "%d",&n );
if( n>=2&&n<=500 ){
for( i=2;i<=n;i++ ){
for( j=2;j<=i;j++ )
if( i%j==0 )
break;
if( i==j )
{
a[ t ]=j;
t++;
} }
for( i=0;i<t;i++ ){
printf( "%5d",a[ i ] );
if( ( i+1 )%8==0 )
printf( "\n" ); } }
return 0;
}
我也是新手。

⑺ C语言 输入n,求n以内的所有素数,空格依次输出,但输出的最后一个数后不能有空格,仅卷入s

#include<stdio.h>

intmain()
{
intn,l=0;
printf("请输入你需要查询的n值:");
scanf("%d",&n);
inta[n],i,j,b[n];
for(i=0;i<n;i++)
{
a[i]=i+1;
b[i]=i+1;
}

b[0]=0;

for(i=1;i<n+1;i++)
{
for(j=1;j<i;j++)
{
if(a[i]%a[j]==0)
b[i]=0;
}
}

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

if(b[i]!=0)
{
l++;
if(l==1)
printf("%d",a[i]);
else
printf("%d",a[i]);
}
}
return0;
}

⑻ C语言:用筛法求之N内的素数。求用最容易懂的方法,我是大一新生,别用太高级的。复制的别来!

#include<stdio.h>
int main()
{
int i, j, a[100]={0};
for (i = 2; i < 100; i++)
a[i] = 1; //从2开始初值赋1,相当于true
for (i = 2; i < 100; i++)
{
if (a[i])
for (j = i * 2; j < 100; j += i)
a[j] = 0; //标记置0
}
for(i=0;i<100;i++)
if(a[i])
printf("%d\n",i);
return 0;
}

⑼ C语言 求出1~N内的所有素数

#include<stdio.h>

intisPrime(int);

voidmain()
{
inti;
intnum;
printf("1~N的所有素数:");
scanf("%d",&num);
for(i=0;i<num;i++)
{
if(isPrime(i))
{
printf("%d ",i);
}
}
printf(" ");
}

intisPrime(intnum)
{
inti;
if(num==0||num==1)
{
return0;
}

if(num==2||num==3)
{
return1;
}

for(i=2;i<=num/2;i++)
{
if(num%i==0)
{
return0;
}
}
return1;
}

⑽ 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("%d ",output[i]);
}
printf("\n");
return 0;
}