输入一个大于等于3的正整数,判断其是否是素数
不知道为什么学校的系统报错#include<stdio.h>
int main()
{
int a,b,c;
printf("请输入大于3小于10000的数:\n");
scanf("%d",&a);
for(b=2;b<a;b+=1)
{
c=a%b;
if(c==0)
{
printf("no prime\n");
break;
return0;
}
else c=1;
}
if (c==1)
printf("prime\n");
return 0;
} 本帖最后由 jackz007 于 2019-3-11 22:31 编辑
是代码有问题,变量 c 不应该同时用作素数标志,应该另外设置专用变量,已经改好:
#include<stdio.h>
main(void)
{
int a , b , c , d ;
printf("请输入大于3小于10000的数:") ;
scanf("%d" , & a) ;
for(b = 2 ; b < a ; b += 1) {
d = 1 ;
c = a % b ;
if(c == 0) {
d = 0 ;
break ;
}
}
if(d) printf("prime\n") ;
else printf("no prime\n") ;
}
你的代码具体有什么问题不知道。
不过明显的问题有,{}多打几个不占你的硬盘空间,代码整洁很重要。
c 是用来求余数的,你又用c来做标记,我认为不合适。
代码我觉得这样写更合适:
#include<stdio.h>
int main()
{
int a,c;
int i;
int flag; // 用于标记是否为素数
printf("请输入大于3小于10000的数:\n");
scanf("%d",&a);
flag = 0; // 先假定是素数
for( i=2;i<a;i++ )
{
c = a % i;
if ( c==0 )
{
flag = 1; // 不是素数标记为1
break; // break 就够了
}
}
if ( flag )
{
printf("no prime\n");
}
else
{
printf("prime\n");
}
return 0;
}
页:
[1]