當前位置:首頁 » 編程語言 » 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;
}