a372187663 发表于 2013-12-22 22:07:25

编一函数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显示的也是素数呀。求告知。其他数值倒没错。。
楼主不会用排版 麻烦大家了

maomingkun 发表于 2013-12-22 22:07:26

兄弟,给你看看我的代码,自己查百度写的,有什么问题的话欢迎提出!

#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);
                        }
                }
        }       
}

a372187663 发表于 2013-12-22 22:10:41

求帮忙啊,我多输入了几遍 发现好多都是错的。

a372187663 发表于 2013-12-22 22:12:53

在线等啊啊啊啊

cocoboy027 发表于 2013-12-22 22:16:50

你这个程序设计有问题
fun函数只会执行一次,根本不能循环判断。
return一旦执行就代表该函数结束
所以当你输入27时,k = 1;那么就会执行else里面的语句 return 1;
此时整个fun结束返回值为1,
main中输出yes

cocoboy027 发表于 2013-12-22 22:17:36

本帖最后由 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>

a372187663 发表于 2013-12-22 22:24:09

cocoboy027 发表于 2013-12-22 22:17 static/image/common/back.gif
可以改为
int fun(int m)
{


改了之后输入27还显示的是YES是素数。

a372187663 发表于 2013-12-22 22:28:22

cocoboy027 发表于 2013-12-22 22:16 static/image/common/back.gif
你这个程序设计有问题
fun函数只会执行一次,根本不能循环判断。
return一旦执行就代表该函数结束


噢 谢了谢了 看懂了
你会改么?谢了

cocoboy027 发表于 2013-12-22 22:54:07

a372187663 发表于 2013-12-22 22:24 static/image/common/back.gif
改了之后输入27还显示的是YES是素数。

不会吧,我的代码没错的,27不会输出yes的

Ъγ:_小ツ雨oο 发表于 2013-12-23 22:58:15

本帖最后由 Ъγ:_小ツ雨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;
      }
}
这个应该是你想要的答案吧 ,

virusx1984 发表于 2013-12-23 23:07:21

不建議直接求助問程序邏輯上的錯誤,因為這個完全可以調試出來,調試越多越有經驗,離高手才越近。DEBUG才是精髓啊,大家要培養樂於DEBUG的心態。
页: [1]
查看完整版本: 编一函数fun,功能是判断一个整数m是否是素数,若是返回1,否则返回0。