判断一个整数是不是素数,我这样子调用函数,为什么最后得到的都是“不是素数”

#include
#include
int main()
{
int n,f,i;
int s(int n);
printf("请输入一个整数:\n");
scanf("%d",&n);
{
if(i<=sqrt(n))
printf("该整数不是素数\n");
else
printf("该整数是素数\n");
}
return 0;
}
int s(int)
{int temp,i,n;
for(i=2;i<=sqrt(n);i++)
if(n%i==0);
temp=n;
return (temp);
}

4个回答

#include
#include
int main()
{
int n, f, i;
int s(int n);
printf("请输入一个整数:\n");
scanf("%d", &n);
i = s(n);
if (i == 0)
printf("该整数不是素数\n");
else
printf("该整数是素数\n");
return 0;
}

int s(int n)
{
int i;
for (i = 2;i <= sqrt(n);i++)
{
if (n % i == 0)
return 0; //不是素数
}
return 1; //是素数
}

Caipta
游穆族人 回复qq_602612418:我这个就是在你的基础上改的,子函数应该是判断素数吧,所以判断完成后返回他是不是素数就ok了,主函数中设置一个int值对子函数的返回值进行性接收,你的代码子函数判断那块,让要判断的数n依次对i取模就好,至于子函数中的temp我其实没太懂你是怎么想的,,,你分析下我的代码应该就明白了,就是你的思路。
2 年多之前 回复
qq_38352092
qq_602612418 如果要在我这个的基础上修改,应该怎么改?
2 年多之前 回复

if(n%i==0)后面加了;,导致判断条件没什么作用了。去掉;。
int s(int n)
{
int temp=0,i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
temp=n;
return (temp);
}
试试这样行不行。

github_38391605
LeiMPro 你的n是形参,要传递过来,你是在s()函数重新定义的。
2 年多之前 回复
github_38391605
LeiMPro 你的n是形参,要传递过来,你是在是()
2 年多之前 回复

函数不是需要在主函数外面先声明吗?for循环下的语句应该加”{}”吧!

qq_38352092
qq_602612418 加了以后还是得到“不是素数”
2 年多之前 回复

我刚刚把你的代码考下来试了一下

你试试把s函数中
if (n % i == 0)
return 0; //不是素数
修改一下
if ((n % i) == 0)
return 0; //不是素数

应该存在运算符优先级的情况

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!