编写程序,输入两个正整数m和n,输出m和n之间的素数并统计素数的个数。要求定义并调用函数prime(m)
为什么这个运行结果总为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是不是素数。根据执行结果是素数和实际符合。
#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;
}
为什么呢?
你这样写只要是奇数就返回1了