x) printf("YES\n"); _c++给定一个n(1 < n < 1000),请按照递增次序输出所有小于等于n的素数。">
赞
踩
一个数如果只能被1和自身正除,那么它是素数。
*注意1不是素数。*
#include<stdio.h>
#include<math.h>
int main(){
int i,n,x;
while(scanf("%d",&n)==1)
{
x=(int)sqrt(n);
for(i=2;i<=x;i++)
if(n%i==0) break;
if(i>x) printf("YES\n");
else printf("NO\n");
}
}
要是求给定一个N(1<N<100000),请按照递增次序输出所有小于等于N的素数。
因为素数的倍数一定不是素数那么就可以
#include<stdio.h>
#include<math.h>
int a[100001];
int main()
{
int i,j,n,count;
while(scanf("%d",&n)==1)
{
n = sqrt(n)+1;
count=0;
for(i=2; i<=n; i++)
{
if(a[i]==0)
for(j=i+i; j<=n; j+=i)
a[j]=1;
}
for(i=2; i<=n; i++)
if(a[i]==0)
count++;
printf("%d\n",count);
}
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。