这个判断100到300的数字是不是素数的c语言哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/26 17:33:16
#include<stdio.h>
main()
{
int w,i,n,a;
printf("输入一个大于100小于300的整数");
scanf("%d",&n);
w=0;
i=2;

while(w=0&&i<n)
{
a=n%i;
if(a=0)w=1;
i++;
}

if(w=0)
printf("yes");
else
printf("no");
}

帮我改改,我大一 刚上了2节编程的课,自己在研究中
不管输入什么数都是显示no
相当郁闷。。。我觉得是while这里弄错了。。。

我用的是cfree 学校用这个软件教的。。。
所以我我也用这个

#include<stdio.h>
main()
{
int w,i,n,a;
printf("输入一个大于100小于300的整数");
scanf("%d",&n);
w=0;
i=2;

while(w==0&&i<n)
{
a=n%i;
if(a==0)w=1;
i++;
}

if(w==0)
printf("yes");
else
printf("no");
printf("\n");
}

不知道你用的是什么编译器 我只用过vc 搞不懂得时候用F9F10查看内存变化就能看出什么地方出错了还有 ‘=’是赋值‘==’才是等号

if(a=0)w=1;
这里
a=0改为a==0,因为a=n%i 是一个余数
而且while判断的时候,是值判断
所以 while(w=0&&i<n)
w=0改为w==0
if(w=0)也要改为w==0
if(w=0)
printf("yes");
这个if(w=0)是把0赋给w
得不到这一步操作,所以不显示yes

用你的思想说,思路完全正确,但有几点:
1.你的while思想没有错。
2.把等号与赋值搞错了。(看2楼的回答)
3.你还可以试着改进。
你想想,在while里面假如a=n%i的值为0,那么是不是就可以不再i++了呢?直接跳出循环,节省时间。

while(w==0&&i<n)
{
a=n%i;
if(a==0)w=1;
i++;
}

if(w==0)
printf("yes");