编写程序,输入两个正整数m和n,输出m和n之间的素数并统计素数的个数。要求定义并调用函数prime(m)

判断m是否为素数,当m为素数时返回1,否则返回0。
为什么这个运行结果总为0?
#include<stdio.h>
#include<math.h>
int main()
{
int prime(int);
int m,n,i,count=0;
printf("请输入两个正整数:");
scanf("%d,%d",&m,&n);
for(i=m;i<=n;i++)
{
if (prime(i)==1)
{
count++;
}
}
printf("这两个正整数之间的素数个数为:%d\n",count);
return 0;
}
int prime(int a)
{
int i;
if(a==1)
return 1;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)
return 0;
else
return 1;
}

1、打开visual studio软件,进入菜单“文件”->新建->新建项目。选择windows窗体程序,项目名为“SuShu”。

2、在窗体上添加控件:lable控件,text值为“输入一个数,判断是否是素数”;一个textbox控件(tb_inputvalue),用来输入要判断的素数。

3、素数设计算法。

4、素数设计算法:取消检测区间,提高程序效率。我们可以只判断2到n/2之间的数,就可以知道他是不是素数了。

5、获取前100之间的所有素数:从2到一百挨个判断,是素数就记录下来。

6、判断一个数是不是素数:if (sushu(Int32.Parse(tb_inputvalue.Text))) {MessageBox.Show(tb_inputvalue.Text + " 是素数");} else { MessageBox.Show(tb_inputvalue.Text + " 不是素数"); }。

7、编译运行程序,我们输入67,检测67是不是素数。根据执行结果是素数和实际符合。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-02

#include<stdio.h>

#include<math.h>

int main()

{

int prime(int a);

int m,n,i,count=0;

printf("请输入两个正整数:");

scanf("%d,%d",&m,&n);

for(i=m;i<=n;i++)

{

if (prime(i)==1)

count++;

}

}

printf("这两个正整数之间的素数个数为:%d\n",count);

return 0;

}

int prime(int a)

{

int i;

if(a==1)

return 0;

for(i=2;i<=sqrt(a);i++)

if(a%i==0)

return 0;

return 1;

}


追问

亲,为啥子明明一样的我的win8系统下就一直是0呢?

追答

你把代码复制过去再运行。原来的程序作了修改了。
还有,你输入的逗号,怎么那么“胖”呢,该减减肥了,要用英文的逗号。

本回答被网友采纳
第2个回答  2015-12-02
把倒数第二行else去掉追问

为什么呢?

追答

你这样写只要是奇数就返回1了

相似回答