#include <iostream.h>
#include <math.h>
int main()
{
int i;
int n;
int k;
int p;
cout<<"please enter n:"<<endl;
cin >> n;
k=int(sqrt(double(n)));
for (i=2;i<=k;i++)
{
if (n%i==0)
{
p=0;
break;
}
else
{
p=1;
}
}
if (p)
{
cout << "it's a prime"<<endl;
}
else
{
cout << "it isn't a prime"<<endl;
}
return 0;
}
那个if(p)是什么意思,该程序是怎么判断的??
c++判断一个数是素数,程序解释
答案:4 悬赏:80 手机版
解决时间 2021-01-30 15:07
- 提问者网友:遁入空寂
- 2021-01-30 08:33
最佳答案
- 五星知识达人网友:野慌
- 2021-01-30 09:40
p是一个标识是否是素数的bool
这个算法并不是最高效的。
{ //求3到200间的素数!!!!!
int a,c,i;
for(a=3;a<=200;a=a+2)
{
for(i=2;i<=a/2;i++)
{
c=a%i;
if(c==0)break;
}
if(i>a/2)
printf("%-5d",a);
}
}
这个算法并不是最高效的。
{ //求3到200间的素数!!!!!
int a,c,i;
for(a=3;a<=200;a=a+2)
{
for(i=2;i<=a/2;i++)
{
c=a%i;
if(c==0)break;
}
if(i>a/2)
printf("%-5d",a);
}
}
全部回答
- 1楼网友:舊物识亽
- 2021-01-30 12:10
素数判别(c语言)
int prime(int x)
{
int m=sqrt(x);
for(int i=2;i=m+1)return 1;//是素数
else return 0;//不是素数
}
- 2楼网友:迷人又混蛋
- 2021-01-30 11:36
p应该使用的类型是bool 以true和false来作为标记
这里的p用的是int型的 道理其实是一样的
不过仍然推荐使用bool
开始p=0 即false 为假
如果p=1 即为true 为真
k=int(sqrt(double(n)));
for (i=2;i<=k;i++)
关于这个,在数学是有证明的
即一个数从2开始除,如果直到根号下这个数都不能除尽的话
这个数就是素数
在早期计算机编程中
由于硬件性能很差,所有程序的编写的效率十分重要,当然现在也是很有必要的,不过不像以前要求那严格了
比如这个素数的求法
1.按定义的话
求一个数N是否是素数
应当从2开始一直除到N-1
如果N=10000的话,就得循环近10000次
2.所以有人对此进行了改进
即求一个数N是否是素数
从2开始一直除到N/2就可以了
如果N=10000的话,就得循环近5000次
3.有人又做了改进
求一个数N是否是素数
从2开始一直除到sqrt(N),就可以了证明了
如果N=10000的话,循环的次数比前面的算法要少得多
如果对此算法有疑问的话
请到网上搜索相关的数学证明
- 3楼网友:孤老序
- 2021-01-30 10:15
只要 一个数 n 能被 1至n的平方根之间的任意一个数整除,那么它就不是素数,即 p = 0
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯