C语言:判断已给定整数是否为素数,问题在注释中
答案:2 悬赏:60 手机版
解决时间 2021-11-07 19:27
- 提问者网友:溺爱和你
- 2021-11-07 14:31
C语言:判断已给定整数是否为素数,问题在注释中
最佳答案
- 五星知识达人网友:山君与见山
- 2021-11-07 15:15
第一个 循环不继续了,因为不满足循环的条件 2<=1不满足
第二个 素数是只有1和本身是因子,没有其他因子,只要能够找到1个不是1和本身的因子,那说明一定不是素数,所以找到1个,就没有必要往下找了。
第三个,你确定可以 i>k ,k即没有初始化,中间也没有进行任何赋值,你知道k是多少吗?而且这里写错了吧 应该是if(i==m) 一个=表示赋值,两个==才表示判断是否相等、追问谢谢你的回答,但很遗憾我还有不明白的地方。
问题一:但是输入2,程序运行结果是“2是素数”,它怎么运行的?
问题二:为什么跳出break,直接printf ("%d不是素数!\n",m)
那个是if(i==m),少打了个“=”
我调试了一下,i>k可以的追答2是素数很容易判断啊 i=2,但没有满足循环条件, 所以没有执行循环,但是i已经赋值为2了
此时m也等于2
i==m
2 == 2 显然满足条件啊,所以输出是素数啊
第二个 K我真的不明白,你调试的时候,K是多少?你没有赋值,也没有初始化,它就是一个随机数,可以是100 ,可以是0 也可以是10000 ,怎么和i比较大小??追问问题一我明白了,谢谢你啊!为什么跳出break,直接printf ("%d不是素数!\n",m)?
啊,那是另一种方法:我忘写了,其中定义了k,k=sqrt(m),百度追问字数要求有限,完整程序就不写了啊问题一我明白了,谢谢你啊!但是为什么跳出break,直接接printf ("%d不是素数!\n",m)?
啊,那是另一种方法,定义k=sqrt(m),由于追问字数有限,完整程序就不在这给你写了啊!(*^__^*)追答if 和 else 总要执行一个吧 中间break了 i肯定不等于m啊,那么就执行else了
第二个 素数是只有1和本身是因子,没有其他因子,只要能够找到1个不是1和本身的因子,那说明一定不是素数,所以找到1个,就没有必要往下找了。
第三个,你确定可以 i>k ,k即没有初始化,中间也没有进行任何赋值,你知道k是多少吗?而且这里写错了吧 应该是if(i==m) 一个=表示赋值,两个==才表示判断是否相等、追问谢谢你的回答,但很遗憾我还有不明白的地方。
问题一:但是输入2,程序运行结果是“2是素数”,它怎么运行的?
问题二:为什么跳出break,直接printf ("%d不是素数!\n",m)
那个是if(i==m),少打了个“=”
我调试了一下,i>k可以的追答2是素数很容易判断啊 i=2,但没有满足循环条件, 所以没有执行循环,但是i已经赋值为2了
此时m也等于2
i==m
2 == 2 显然满足条件啊,所以输出是素数啊
第二个 K我真的不明白,你调试的时候,K是多少?你没有赋值,也没有初始化,它就是一个随机数,可以是100 ,可以是0 也可以是10000 ,怎么和i比较大小??追问问题一我明白了,谢谢你啊!为什么跳出break,直接printf ("%d不是素数!\n",m)?
啊,那是另一种方法:我忘写了,其中定义了k,k=sqrt(m),百度追问字数要求有限,完整程序就不写了啊问题一我明白了,谢谢你啊!但是为什么跳出break,直接接printf ("%d不是素数!\n",m)?
啊,那是另一种方法,定义k=sqrt(m),由于追问字数有限,完整程序就不在这给你写了啊!(*^__^*)追答if 和 else 总要执行一个吧 中间break了 i肯定不等于m啊,那么就执行else了
全部回答
- 1楼网友:北方的南先生
- 2021-11-07 15:34
#include
main()
{
int m,i,k;
scanf("%d",&m);
for(i=2;i<=m-1;i++) //逗号改成分号,如果m=2,不执行程序,因为每次执行for里面的语句前都会判断是否满足条件的i<=m-1
if(m%i==0)
break; // 两种情况下会跳出循环,1. i是m的因子,即m%i==0,此时说明m不是素数;2. i变成m,for正常结束,说明m没有其他因子,是素数
if(i==m) // 此处不能是(i>k),k都没有初始化,而且要改成i==m,
printf("%d是素数! ",m)
else
printf ("%d不是素数! ",m)
}追问谢谢你的回答,但很遗憾我还有不明白的地方。
问题一:但是输入2,程序运行结果是“2是素数”,它怎么运行的?
问题二:为什么跳出break,直接printf ("%d不是素数!\n",m)追答
main()
{
int m,i,k;
scanf("%d",&m);
for(i=2;i<=m-1;i++) //逗号改成分号,如果m=2,不执行程序,因为每次执行for里面的语句前都会判断是否满足条件的i<=m-1
if(m%i==0)
break; // 两种情况下会跳出循环,1. i是m的因子,即m%i==0,此时说明m不是素数;2. i变成m,for正常结束,说明m没有其他因子,是素数
if(i==m) // 此处不能是(i>k),k都没有初始化,而且要改成i==m,
printf("%d是素数! ",m)
else
printf ("%d不是素数! ",m)
}追问谢谢你的回答,但很遗憾我还有不明白的地方。
问题一:但是输入2,程序运行结果是“2是素数”,它怎么运行的?
问题二:为什么跳出break,直接printf ("%d不是素数!\n",m)追答
for(i=2;i<=m-1;i++)设置i=2,m=2,这样就直接输出“2是素数”
两种情况下会跳出循环,1. i是m的因子,即m%i==0,此时说明m不是素数;2. i变成m,for正常结束,说明m没有其他因子,是素数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯