判断一个数是素数
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
去除。为什m 么可以做如此简化呢?因为如果m能被 m2~m-1之间任意整数整除,如果这个数大于 ,那
这个数必定对应的还有一个比 小的因子(以16为例 ,2、8是它的因子,8大于4,2小于4)。
源程序
• #include<stdio.h>
• #include<math.h>
• #define TRUE 1
•{
•
for(int i=2;i<=sqrt(a%i==0) return false;
•
return true;
•}
• void main(){
• int a;
• printf("请输入:");
•
scanf("%d",&a);
•
if(isprime(a))
•
printf("是素数\n");
•
else
•
printf("不是素数\n");
•
•}
方法三:
• void main(){
• int i,k,m;
•
scanf("%d",&i);
• k=sqrt(i); //判别i是否为素数,只需使2~根号i之间的每 一个整数去除
• for(m=2;m<=k;m++)
•
if(i%m==0)break;
质数(素数)。\n", t);
7
return 0;
8
}
• #define FALSE 0
• int main()
•{
•
int n;
•
char isPrime(int n);
//声明函数isPrime
•
printf("Please enter a number:");
•
scanf("%d\n",&n);
•
if(isPrime(n)==TRUE){
•
printf("TRUE\n");
运行结果
• • • • • • • • • • • • • • • • • •}
else
} else { } return c;
{ for(i=3;i<=sqrt(n);i+=2) { if(n%i==0) { c=FALSE; break; } }
} c=FALSE;
方法二:
• bool isprime(int a)
break;
•
}
•
if(n==i)
•
{
• 左对齐;
printf("%-8d", n);//数据占8个宽度,并
•
t++;
•
1
if (t%5==0) //每输出5个素 数后换行;
2
printf ("\n"); //字符输出函数;
3
}
4
}
5
printf("\n");
6
printf("1-100内共有以上%d个
•
}
else } char isPrime(int n) char c=TRUE; else if(n>2)
{ return 0; { if(n==2){ {
p r i n t f ( " FA L S E \ n" ) ; } int i; c=TRUE;} if(n%2==0) { c = FA L S E ; }
如何判断一个数是 素数?
C/C++
基本思想
判断一个整数m是否为素数,只需用2~m-1之间的 每一个整数去除,如果都不能被整除,那么m就是一 个素数。
m
其实可以简化,m不必被2~m-1之间的每一个整数 去除,只需被2~ 之间的每个数去除就可以了。例 如判别17是否为素数,只需使2~4之间的每一个整数
•
if(m>k)
•
printf("%d是素数 ",i);
•
else printf("%d不是素数",i);
•}
输出1~100之 间的素数
• int main()
•{
•
int i,n,t=0;
•
for(n=1;n<=100;n++)
•
{
•
for(i=2;i<=n;i++)
•
{
•
if(n%i==0)
•
这个数必定对应的还有一个比 小的因子(以16为例 ,2、8是它的因子,8大于4,2小于4)。
源程序
• #include<stdio.h>
• #include<math.h>
• #define TRUE 1
•{
•
for(int i=2;i<=sqrt(a%i==0) return false;
•
return true;
•}
• void main(){
• int a;
• printf("请输入:");
•
scanf("%d",&a);
•
if(isprime(a))
•
printf("是素数\n");
•
else
•
printf("不是素数\n");
•
•}
方法三:
• void main(){
• int i,k,m;
•
scanf("%d",&i);
• k=sqrt(i); //判别i是否为素数,只需使2~根号i之间的每 一个整数去除
• for(m=2;m<=k;m++)
•
if(i%m==0)break;
质数(素数)。\n", t);
7
return 0;
8
}
• #define FALSE 0
• int main()
•{
•
int n;
•
char isPrime(int n);
//声明函数isPrime
•
printf("Please enter a number:");
•
scanf("%d\n",&n);
•
if(isPrime(n)==TRUE){
•
printf("TRUE\n");
运行结果
• • • • • • • • • • • • • • • • • •}
else
} else { } return c;
{ for(i=3;i<=sqrt(n);i+=2) { if(n%i==0) { c=FALSE; break; } }
} c=FALSE;
方法二:
• bool isprime(int a)
break;
•
}
•
if(n==i)
•
{
• 左对齐;
printf("%-8d", n);//数据占8个宽度,并
•
t++;
•
1
if (t%5==0) //每输出5个素 数后换行;
2
printf ("\n"); //字符输出函数;
3
}
4
}
5
printf("\n");
6
printf("1-100内共有以上%d个
•
}
else } char isPrime(int n) char c=TRUE; else if(n>2)
{ return 0; { if(n==2){ {
p r i n t f ( " FA L S E \ n" ) ; } int i; c=TRUE;} if(n%2==0) { c = FA L S E ; }
如何判断一个数是 素数?
C/C++
基本思想
判断一个整数m是否为素数,只需用2~m-1之间的 每一个整数去除,如果都不能被整除,那么m就是一 个素数。
m
其实可以简化,m不必被2~m-1之间的每一个整数 去除,只需被2~ 之间的每个数去除就可以了。例 如判别17是否为素数,只需使2~4之间的每一个整数
•
if(m>k)
•
printf("%d是素数 ",i);
•
else printf("%d不是素数",i);
•}
输出1~100之 间的素数
• int main()
•{
•
int i,n,t=0;
•
for(n=1;n<=100;n++)
•
{
•
for(i=2;i<=n;i++)
•
{
•
if(n%i==0)
•