注册 登录
编程论坛 VC++/MFC

判断由键盘输入的一个数是否是素数,我的程序错哪里了?

小篇 发布于 2011-06-25 23:32, 541 次点击
判断由键盘输入的一个数是否是素数,我的程序错哪里了?
#include<stdio.h>
#include<math.h>
void main()
{   
   int x,i;
   printf("please input x :\n");
   scanf("%d",&x);
   if(x<=2)
     printf("NO\n");
   else
   {
     for(i=2;i<=sqrt(x);i++)
     {  if(x%i==0)
            printf("NO\n");
       else
            printf("YES\n");
     }
   }
}
1 回复
#2
水古奇影2011-06-26 21:05
你的代码问题是:
#include<stdio.h>
#include<math.h>
void main()
{   
   int x,i;
   printf("please input x :\n");
   scanf("%d",&x);//因数x=3是无法判断的,即为:no,还有sqrt函数问题了,还要注意范围为int和type
   if(x<=2)
     printf("NO\n");
   else
   {
     for(i=2;i<=sqrt(x);i++)
     {  if(x%i==0)
            printf("NO\n");//这里少了一个break语句
       else
            printf("YES\n");
     }
   }
}
给你改的:
#include<stdio.h>
#include<math.h>

int main(void)
{   
   int x,i;
   printf("please input x :\n");
   scanf("%d",&x);
   if(x<=2)
     printf("NO\n");
   else
   {
     for(i=2;i<=sqrt(x);i++)
      if(x%i==0)
      {  
                printf("NO\n");
                break;
      }   
       if(i>sqrt(x))
            printf("YES\n");
     
   }
}
我写的:
#include "stdio.h"

int fun(int n)
{
  
  int a=2;
   
  while (a<n)
  if (!(n%a++)) break;
  if (a==n) return 1;
  return 0;
  
}


void main()
{   
    int n;
    scanf("%d\n", &n);
    if(fun(n))
    printf("yes");
    else
    printf("no");
}
1