>n; for(j=2;j<=n;j++) { int sq=sqrt(j); for(i=2;i<=sq;i++) if(j%i==0) bre_实现输入一个n输出n以内的素数">
赞
踩
- #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;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。