c语言实现输出1~100内质数,求思路。谢谢!
4个回答
展开全部
利用循环,让这个数从2除到开根号——>for(i=2;i<=sqr(m);i++)
然后循环内判断是否能被整除,并用flag做个标记,初值flag=1——>if(m%i==0)flag=0
循环完成,即判断结束,利用标记判断是否是质数,如果是,那么flag应该还是为1——>if(flag)printf……
以上就是判断部分,那么从1~100可以在以上基础上加上外循环for(m=1;m<=100;m++)就实现从1~100依次判断了
然后循环内判断是否能被整除,并用flag做个标记,初值flag=1——>if(m%i==0)flag=0
循环完成,即判断结束,利用标记判断是否是质数,如果是,那么flag应该还是为1——>if(flag)printf……
以上就是判断部分,那么从1~100可以在以上基础上加上外循环for(m=1;m<=100;m++)就实现从1~100依次判断了
追问
请问为什么要用平方根除
追答
只需要被除到平方根,我来举个例子
比如100,平方根是10
能整除就是2*50,4*25,5*20,都分布在平方根两边,也就是说能整除的数就分布在平方根两边,不会出现两个数在平方根同侧的情况,所以只要判断一边就足够了,可以降低运算,简化步骤
展开全部
从质数的定义出发,用两层循环,外层循环遍历1至100的每个数,内层循环,用当前数字N分别除以2至N-1,如果其中有任一个结果为整数(能够整除),则说明N不是质数,直接continue至下一数字;如果都不能整除,则说明N是质数,输出。
追问
谢谢 你的回答对我也很有启发
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main()
{
int j,i;
for(i=2;i<100;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(j>=i)
printf("%d ",i);
}
printf("\n");
return 0;
}
int main()
{
int j,i;
for(i=2;i<100;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(j>=i)
printf("%d ",i);
}
printf("\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for i=1 .. 100
for j=2 .. j<i
if i%j==0 不是质数;break;
for j=2 .. j<i
if i%j==0 不是质数;break;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询