您的位置:首页 > 其它

求素数,给你一个n,输出n以内的素数

2016-04-05 22:07 525 查看
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
int i,j,n;
bool is_primer;
cout<<"please enter n\n";
cin>>n;
for(j=2;j<=n;j++)
{
int sq=sqrt(j);
for(i=2;i<=sq;i++)
if(j%i==0)
break;
if(i==sq+1)
cout<<j<<'\t';
}

}

一开始直接遍历除了本身和1以外的数,但是这样会有大量的浪费,考虑到一个数不能被其开方和小于开方的数整除即是素数。也就是说这样子就只要遍历到其开方就好了。下面给出参考答案,答案显然更合理

#include<stdio.h>

int isprime(int);

int main(void)
{
int num,i;
printf("input a positive number:");
scanf("%d",&num);
printf("all the primes <= %d:\n",num);
for(i=2;i<=num;i++)
if( isprime(i) )
printf("%d\t",i);
printf("\n");
return(0);
}

int isprime(int n)  //如果n是素数 返回1,反之 返回0
{
int div;
for(div = 2; div * div <= n; div++)
if (n % div == 0)
return 0;

return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: