首页 > 编程知识 正文

c语言怎样求大于m的n个素数,c语言怎么判断是不是素数

时间:2023-05-05 05:49:50 阅读:153567 作者:1731

#包含

布尔型(intx ) )。

{

if(x==1) )。

返回假;

elseif(x=0) ) )。

返回假;

ELSEif(x==2) ) )。

返回真;

else

{

for(intI=2; i x; I )

{

if(x%I==0) ) ) ) ) ) )。

返回假;

}

返回真;

}

}

入主(void ) )。

{

int x;

char ch;

do{

请输入printf (大于' 1的自然数:n );

scanf('%d ',x );

if(isprimenum(x )==false ) ) ) )。

printf('%d”不是素数(n ),x );

elseif(isprimenum(x )==true ) )。

printf('%d为素数(n ),x );

打印(是否继续(y/n ) :n ) n );

scanf('%c ',ch );

}while () y )==ch|| ) y )==ch );

返回0;

}

但是,在运行中,发生了一个问题。

本来,写do.while是为了省去麻烦,反复判断。 但是,目瞪口呆是没有效果的。

随后修改了:

#包含

布尔型(intx ) )。

{

if(x==1) )。

返回假;

elseif(x=0) ) )。

返回假;

ELSEif(x==2) ) )。

返回真;

else

{

for(intI=2; i x; I )

{

if(x%I==0) ) ) ) ) ) )。

返回假;

}

返回真;

}

}

入主(void ) )。

{

int x;

char ch;

do{

请输入printf (大于' 1的自然数:n );

scanf('%d ',x );

if(isprimenum(x )==false ) ) ) )。

printf('%d”不是素数(n ),x );

elseif(isprimenum(x )==true ) )。

printf('%d为素数(n ),x );

打印(是否继续(y/n ) :n ) n );

scanf('%c ',ch ); //在此处输入空格

}while () y )==ch|| ) y )==ch );

返回0;

}

这样,问题就不可思议地解决了。

之后,将:改为这样

#包含

布尔型(intx ) )。

{

if(x==1) )。

返回假;

elseif(x=0) ) )。

返回假;

ELSEif(x==2) ) )。

返回真;

else

{

for(intI=2; i x; I )

{

if(x%I==0) ) ) ) ) ) )。

返回假;

}

返回真;

}

}

入主(void ) )。

{

int x;

char ch;

do{

请输入printf (大于' 1的自然数:n );

scanf('%d ',x );

if(isprimenum(x )==false ) ) ) )。

printf('%d”不是素数(n ),x );

elseif(isprimenum(x )==true ) )。

printf('%d为素数(n ),x );

打印(是否继续(y/n ) :n ) n );

scanf((n%c ),ch ); //在此处输入换行符“n”

}while () y )==ch|| ) y )==ch );

返回0;

}

没关系。

所以,总结起来,问题似乎是输入数字并按回车,“n”还保存在输入流中

因此,请看第一个代码:

入主(void ) )。

{

int x;

char ch;

do{

请输入printf (大于' 1的自然数:n );

scanf('%d ',x );

if(isprimenum(x )==false ) ) ) )。

printf('%d”不是素数(n ),x );

elseif(isprimenum(x )==true ) )。

printf('%d为素数(n ),x );

打印(是否继续(y/n ) :n ) n );

scanf('%c ',ch ); //因为输入流中还有“n”,所以ch='n”;

}while () y )==ch|| ) y )==ch ); //'y '!='n' 'Y '!='n ';

返回0; //因此,程序为return

}

也可以使用fflush(stdin )清空输入缓冲区。

#包含

布尔型(intx ) )。

{

if(x==1) )。

返回假;

elseif(x=0) ) )。

返回假;

ELSEif(x==2) ) )。

返回真;

else

{

for(intI=2; i x; I )

{

if(x%I==0) ) ) ) ) ) )。

返回假;

}

返回真;

}

}

入主(void ) )。

{

int x;

char ch;

do{

请输入printf (大于' 1的自然数:n );

scanf('%d ',x );

if(isprimenum(x )==false ) ) ) )。

printf('%d”不是素数(n ),x );

elseif(isprimenum(x )==true ) )。

printf('%d为素数(n ),x );

printf (是否继续) :(n );

flush(stdin; //清空输入缓冲区

scanf('%c ',ch );

}while () y )==ch|| ) y )==ch );

返回0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。