Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
|
3ebe0cab75 | 4 years ago |
@ -0,0 +1,53 @@
|
||||
//素数
|
||||
//方法1
|
||||
#include<stdio.h>
|
||||
int main()
|
||||
{
|
||||
int n,i;
|
||||
scanf("%d",&n);
|
||||
for(i=2;i<=n-1;i++)
|
||||
if(n%i==0) break;
|
||||
if(i==n) printf("%d是素数",n);
|
||||
else printf("%d不是素数",n);
|
||||
return 0;
|
||||
}
|
||||
//方法2
|
||||
#include<stdio.h>
|
||||
#include<math.h>
|
||||
int main()
|
||||
{
|
||||
int n,i;
|
||||
scanf("%d",&n);
|
||||
for(i=2;i<=sqrt(n);i++)
|
||||
if(n%i==0) break;
|
||||
if(i>sqrt(n)) printf("%d是素数",n);
|
||||
else printf("%d不是素数",n);
|
||||
return 0;
|
||||
}
|
||||
//方法3
|
||||
#include<stdio.h>
|
||||
bool isPrime_3( int num )
|
||||
{
|
||||
//两个较小数另外处理
|
||||
if(num ==2|| num==3 )
|
||||
return 1 ;
|
||||
//不在6的倍数两侧的一定不是质数
|
||||
if(num %6!= 1&&num %6!= 5)
|
||||
return 0 ;
|
||||
int tmp =sqrt( num);
|
||||
//在6的倍数两侧的也可能不是质数
|
||||
for(int i= 5;i <=tmp; i+=6 )
|
||||
if(num %i== 0||num %(i+ 2)==0 )
|
||||
return 0 ;
|
||||
//排除所有,剩余的是质数
|
||||
return 1 ;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
int n,i;
|
||||
scanf("%d",&n);
|
||||
i=isPrime_3(n);
|
||||
if(i==1) printf("%d是素数",n);
|
||||
else printf("%d不是素数",n);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in new issue