求素数(C语言)用函数
发布网友
发布时间:2022-04-26 10:03
我来回答
共3个回答
热心网友
时间:2022-06-27 03:30
#include<stdio.h>
int sushu(int z);/*函数声明最好放在外面,放到文件前端*/
void main()
{
int b,a;
printf("enter a date:\n");
scanf("%d",&b);
a=sushu(b);
if(a==0||b==0)
printf("no\n");
else
printf("yes\n");
}
int sushu(int z)
{
int i , j;/*i和返回值要分开,i要做循环标尺的*/
for(i=2;i<z;i++)
{
if(z%i==0)
{
j=0;
break;/*一旦发现不是素数,跳出for循环*/
}
else
j=1;/*如果用i,就是个死循环,如果是素数,每次你把i=1后for循环一直继续*/
}
return j;
}
热心网友
时间:2022-06-27 03:30
int sushu(int z)
{
int i;
for(i=2;i<z;i++)
{
if(z%i==0)
{
return 0;
}
}
return 1;
}
你这for循环里一直给i赋值1或者0,for就死循环了。追问不懂。。。
追答for(i=2;i<z;i++)
这个循环每执行一次,都要判断i<z条件是否满足,你在循环里的操作i=0或者else i=1,相当于这个循环条件一直满足,函数sushu跳不出这个for循环。
return 的话直接就可以跳出函数了。
具体你可以再看看C语言for循环定义。
热心网友
时间:2022-06-27 03:31
int sushu(int z)
{
int i;
for(i=2;i<z;i++)
if(z%i==0) i=0;
else i=1;
return i;
}
改成
int sushu(int z)
{
int i;
for(i=2;i<z;i++)
if(z%i==0)
{
i=0;
return i;
}
else if(i==z)
{
i=1;
return i;
}
}