编一函数fun,功能是判断一个整数m是否是素数,若是返回1,否则返回0。
#include<stdio.h>int fun(int m)
{
int i,k;
for(i=2,k=0;i<m;i++)
{
k=m%i;
if(k==0)
{
return 0;
}
else
{
return 1;
}
}
return -1;
}
main()
{
int m;
printf("请输入一个整数:\n");
scanf("%d",&m);
if(fun(m))
{
printf("yes.%d\n",m);
}
else
{
printf("no.\n");
}
}为什么我输入27显示的也是素数呀。求告知。其他数值倒没错。。
楼主不会用排版 麻烦大家了 兄弟,给你看看我的代码,自己查百度写的,有什么问题的话欢迎提出!
#include <stdio.h>
#include <math.h>
voidmain()
{
int n;// 接收输入的正整数
int i;
int j;//j=0标志n是质数,j=1标志n是合数
printf("请输入一个正整数!\n");
scanf("%d",&n);
while(n<0)
{
printf("请输入一个正整数!\n");
scanf("%d",&n);
}
if (n>=0)
{
if (n==1||n==0)
{
printf("%d既不是质数也不是合数!\n",n);
}
else if(n==2 ||n==3)
{
printf("%d是质数!\n",n);
}
else
{
for (i=2;i<=(int)sqrt(n);i++)
{
if (n%i==0)
{
printf("%d是合数!\n",n);
printf("%d的最小因子i=%d!\n",n,i,n);
j=1;
break;
}
else
{
j=0;
}
}
if (0==j)
{
printf("%d是质数!\n",n);
}
}
}
} 求帮忙啊,我多输入了几遍 发现好多都是错的。 在线等啊啊啊啊 你这个程序设计有问题
fun函数只会执行一次,根本不能循环判断。
return一旦执行就代表该函数结束
所以当你输入27时,k = 1;那么就会执行else里面的语句 return 1;
此时整个fun结束返回值为1,
main中输出yes 本帖最后由 cocoboy027 于 2013-12-22 22:20 编辑
可以改为
int fun(int m)
{
int i;
for (i=2; i<sqrt(m); i++)
{
if(m%i == 0)
return 0;
}
return 1;
}
注意添加头文件
# include <math.h>
cocoboy027 发表于 2013-12-22 22:17 static/image/common/back.gif
可以改为
int fun(int m)
{
改了之后输入27还显示的是YES是素数。 cocoboy027 发表于 2013-12-22 22:16 static/image/common/back.gif
你这个程序设计有问题
fun函数只会执行一次,根本不能循环判断。
return一旦执行就代表该函数结束
噢 谢了谢了 看懂了
你会改么?谢了 a372187663 发表于 2013-12-22 22:24 static/image/common/back.gif
改了之后输入27还显示的是YES是素数。
不会吧,我的代码没错的,27不会输出yes的 本帖最后由 Ъγ:_小ツ雨oο 于 2013-12-23 23:01 编辑
#include<stdio.h>
#include<math.h>
void main()
{
int fun(int n);
int k,b;
scanf("%d",&k);
b=fun(k);
printf("%d",b);
}
int fun(int n)
{
int i,j;
i=sqrt(n);
for(j=2;j<=i;j++)
{
if(n%j==0)
{
return 0;
}
}
if(j>=i)
{
return 1;
}
}
这个应该是你想要的答案吧 ,
不建議直接求助問程序邏輯上的錯誤,因為這個完全可以調試出來,調試越多越有經驗,離高手才越近。DEBUG才是精髓啊,大家要培養樂於DEBUG的心態。
页:
[1]