用C语言编1到100之间的素数程序

#include〈math.h〉main(){intm,k,i;for(m=1;m<=100;m=m+2){k=sqrt(m)for(i=2;i<=k;i++)if(m%... #include〈math.h〉
main()
{ int m,k,i;
for(m=1;m<=100;m=m+2)
{ k=sqrt(m)
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1) pritnf("%d",m);
}
}
把{}内的详细解释一下为什么。。。看不懂啊~
特别是sqrt那段,虽然知道是平方根什么来着的,可还是不懂啊~
展开
 我来答
啤酒哥知识站
推荐于2019-11-13 · TA获得超过2.6万个赞
知道答主
回答量:191
采纳率:0%
帮助的人:9.3万
展开全部

程序及解释如下:

首先判断素数的算法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

则有如下程序

{ int m,k,i;

for(m=1;m<=100;m=m+2)      //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2.

{ k=sqrt(m)                            //先求这个数的平方跟

for(i=2;i<=k;i++)                    //然后用i(从2到k,即m的平方跟)去除m,

if(m%i==0) break;                 //如果能被整除, 则不是素数,break

if(i>=k+1) pritnf("%d",m);    //如果i>k+1,则说明没有数能整除m.则m是素数

}
}

扩展资料:

素数被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。

在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数设计成质数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。

在害虫的生物生长周期与杀虫剂使用之间的关系上,杀虫剂的质数次数的使用也得到了证明。实验表明,质数次数地使用杀虫剂是最合理的:都是使用在害虫繁殖的高潮期,而且害虫很难产生抗药性。

以质数形式无规律变化的导弹和鱼雷可以使敌人不易拦截。

多数生物的生命周期也是质数(单位为年),这样可以最大程度地减少碰见天敌的机会。

参考资料:百度百科 素数



听不清啊
高粉答主

推荐于2017-09-25 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<stdio.h>

#include<math.h>

int isprime(int n)

{int i;

for(i=2;i<=sqrt(n);i++)

  if(n%i==0)return 0;

return 1;

}

int main()

{

int i,j,s=0;

for(i=2;i<=100;i++)

if(isprime(i))

printf("%4d",i);

 getch();

return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ivanzxy
推荐于2017-09-02 · TA获得超过1166个赞
知道小有建树答主
回答量:284
采纳率:100%
帮助的人:366万
展开全部
判断素数的方法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

{ int m,k,i;
for(m=1;m<=100;m=m+2) //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2.
{ k=sqrt(m) //先求这个数的平方跟
for(i=2;i<=k;i++) //然后用i(从2到k,即m的平方跟)去除m,
if(m%i==0) break; //如果能被整除, 则不是素数,break
if(i>=k+1) pritnf("%d",m); 如果i>k+1,则说明没有数能整除m.则m是素数
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hradlishk
2008-07-27 · TA获得超过179个赞
知道答主
回答量:147
采纳率:0%
帮助的人:123万
展开全部
# include<stdio.h>
void main(){
int i,j;
for(i=2;i<101;i++){
for(j=2;j<i;j++)if(i%j==0)break;
if(i==j)printf("%3d",i);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wei21125020815
2019-10-21
知道答主
回答量:1
采纳率:0%
帮助的人:694
展开全部
#include "stdio.h"
main ()
{
int i,j;
for( i = 2 ; i<=100 ; i++){
for( j = 2 ; j<i ; j++)
if(i%j==0)break;
if(j==i)
printf("%d\t",i);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式