C语言(判断非素数)

#include<stdio.h>voidfun(intm,int*k,intxx[]){inti,j,n=0;for(i=4;i<m;i++){for(j=2;j<i;... #include<stdio.h>
void fun(int m,int *k,int xx[])
{int i,j,n=0;
for(i=4;i<m;i++)
{for(j=2;j<i;j++)
if(i%j==0)break;
if(j<i)
xx[n++]=i;
}
*k=n;
}
求详解~~~~没想通为什么 if(i%j==0)break;我感觉应该是 if(i%j!=0)break;
展开
 我来答
乐跑小子
推荐于2018-03-29 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:9%
帮助的人:3993万
展开全部
/*Prime函数用来判断参数m是否是素数,用的方法是用m被2~√m之间的整数除,看能不能整除。能整除,说明是合数,返回0,否则是素数,返回1。主调函数调用它,对输入的整数n值进行判断,看是否素数。*/
#include <stdio.h>
#include <math.h>
void main()
{
int IsPrime(int m);
int n, flag;
printf("Input n:");
scanf("%d", &n);
flag = IsPrime(n);
if ( flag)
printf("它是素数\n");
else
printf("它不是素数\n");
}
int IsPrime(int m)
{
int i, k;
if (m <= 1)
return 0;
for (i=2; i<(int)sqrt(m); i++)
{
k = m%i;
if ( k==0)
{
return 0;
}
}
return 1;
}
匿名用户
2014-03-14
展开全部
if(i%j==0)break; 实际上就是在判断i是不是素数。如果i是素数,那么肯定有个j使得 i%j==0,所以只要一出现 i%j==0 ,肯定就是素数了,然后break出内部循环,记录在xx数组里面。
追问
i能被j整除就肯定不是素数啊
追答
搞错了。以为一下子就判断出i不是素数了,然后就不用继续判断下去了。比如i=8, j=2,此时能够整除,就说明i不是素数了, 就不用继续往下判断 8/3, 8/4 .... 了。因此退出。xx记录的是非素数。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸福了然后额
2014-03-14
知道答主
回答量:4
采纳率:0%
帮助的人:2.6万
展开全部
因为i可以整除j,所以没必要循环了,所以用break
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
名字叫难忘啊DM
高粉答主

2020-02-19 · 醉心答题,欢迎关注
知道答主
回答量:5.8万
采纳率:3%
帮助的人:2570万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式