怎么判断1到100之间的素数?用C语言程序
答案:2 悬赏:60 手机版
解决时间 2021-11-12 07:33
- 提问者网友:星軌
- 2021-11-11 12:37
怎么判断1到100之间的素数?用C语言程序
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-11-11 12:46
//1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
//2.程序源代码:
#include "stdio.h"
#include "math.h"
main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=1;m<=100;m++)
{
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;break;
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nThe total is %d",h);
return 0;
}追问为啥要用平方根这个函数??为啥⊙▽⊙!?
//2.程序源代码:
#include "stdio.h"
#include "math.h"
main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=1;m<=100;m++)
{
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;break;
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nThe total is %d",h);
return 0;
}追问为啥要用平方根这个函数??为啥⊙▽⊙!?
全部回答
- 1楼网友:杯酒困英雄
- 2021-11-11 14:08
这好像是C语言书上一个例子,lz问之前可以搜一下,这题被网上问过好多了。。。下面为copy
判断素数的方法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
#include〈math.h〉
main()
{ 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是素数
}
}追问为啥要用平方根这个函数??为啥???追答“因为如果一个数不是素数是合数,
那么一定可以由两个自然数相乘得到,
其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。”
对于某个数,平方根相当于中点,如果你找到一半都没有找到可以整除的,那么就不用再继续搜索了,节省计算成本
判断素数的方法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
#include〈math.h〉
main()
{ 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是素数
}
}追问为啥要用平方根这个函数??为啥???追答“因为如果一个数不是素数是合数,
那么一定可以由两个自然数相乘得到,
其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。”
对于某个数,平方根相当于中点,如果你找到一半都没有找到可以整除的,那么就不用再继续搜索了,节省计算成本
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯