判断素数
#include <stdio.h>int main()
{
int a,b;
scanf("%d,&a");
if(a==1)
{
printf("NO");
}
else
{
for(b=2;b<a/2;b++)
if(a%b==0)
{
printf("NO");
}
else
{
printf("YES");
}
}
return 0;
}
这个代码哪里出错了,判断不出正确答案 本帖最后由 风过无痕1989 于 2020-11-4 01:32 编辑
你的程序有两处错误,见注释
#include <stdio.h>
int main()
{
int i,a; // 输入的整数
int b = 0; // 能被整的次数
printf("输入一个整数:");
scanf("%d",&a); // 原程序引号位置错误
if(a == 1)
{
printf("NO");
}
for(i = 2;i < a;i++)
{ // 原程序缺少花括号
if(a % i == 0)
{
b++; // 能被整的次数加1
}
}
if(b == 0)
{
printf("Yes");
}
else
{
printf("No");
}
return 0;
}
本帖最后由 jackz007 于 2020-11-4 01:11 编辑
scanf("%d,&a") ;
1、上面这句代码中红色的引号是否用错了位置?
2、确定 a 是否为素数应该是在寻找 a 的因数的循环完成后进行,也就是说,应该在循环外而不是循环内打印 YES / NO,如果在循环内找到了 a 的因数应该设置标志,并立即终止循环,这也是楼主的代码没有做到的;
下面的代码谨供楼主参考
#include <stdio.h>
int main(void)
{
int a , b , c = 0 ;
scanf("%d" , & a) ;
if(a > 1) {
for(c = 1 , b = 2 ; b * b < a + 1 ; b ++) {
if(b < a && ! (a % b)) {
c = 0 ;
break ;
}
}
}
if(c) printf("YES\n") ;
else printf("NO\n") ;
} #include <stdio.h>
#include <math.h>
int Su(int a);
int main()
{
int s;
scanf("%d",&s);
Su(s);
}
int Su(int a)
{
int i,k;
k=sqrt(a);
for(i=2;i<=k;i++)
{
if(a%i==0)break;
}
if(i>k)
printf("Yes!");
else
printf("No!");
} jackz007 发表于 2020-11-4 00:42
scanf("%d,&a") ;
1、上面这句代码中红色的引号是否用错了位置?
受教了,最佳给错了><
页:
[1]