C语言求素数,大概解题思路什么。,。人太笨,怎么想也想不到求素数方法。,。发答案的哥哥姐姐们谢谢了
答案:4 悬赏:60 手机版
解决时间 2021-04-04 06:03
- 提问者网友:雪舞兮
- 2021-04-03 23:03
C语言求素数,大概解题思路什么。,。人太笨,怎么想也想不到求素数方法。,。发答案的哥哥姐姐们谢谢了,欧不需要。,。
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-04-04 00:08
思路很简单啊,如果这个数小于2,那么就不是素数,否则从这个数分别除以大于2并且小于他本身的数,如果有能被该数整除的数,那么该数就不是素数,否则就是素数。
对他进行优化就是用这个数除以大于2并且小于等于该数开根号的值,如果有能被整除的就不是素数,否则是素数。
对他进行优化就是用这个数除以大于2并且小于等于该数开根号的值,如果有能被整除的就不是素数,否则是素数。
全部回答
- 1楼网友:野味小生
- 2021-04-04 02:03
看你需不需要追求时间效率
是不是需要求超大的素数,int64 的有20位
甚至高精度情况下的素数,百位上千位
可以建立素数表来求
你仔细想想,任意一个整数都能分成几个素数的乘积,只由素数只有自己
所以,对于每个我们需要判断的数,只需要用素数表里的数来除即可
若都不能整除,那此数一定也是素数,那就把它加入素数表内
一直求下去就行,一般来说10000个数的素数表就能判断 int32内的素有数
因为素数表能判断素数的范围是 表内最大那个素数的平方
- 2楼网友:怙棘
- 2021-04-04 01:13
筛法求素数。
简单介绍一下厄拉多塞筛法。厄拉多塞是一位古希腊数学家,他在寻找素数时,采用了一种与众不同的方法:先将2-N的
各数写在纸上:
在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一个数 是5,将它画圈,并划去5的其他倍数……依次类推,一直到所有小于或等于N的各数都画了圈或划去为止。这时,表中画了圈的以及未划去的那些数正好就是小于 N的素数。
这很像一面筛子,把满足条件的数留下来,把不满足条件的数筛掉。由于这种方法是厄拉多塞首先发明的,所以,后人就把这种方法称作厄拉多塞筛法。
在计算机中,筛法可以用给数组单元置零的方法来实现。具体来说就是:首先开一个数组:a[i],i=1,2,3,…,同时,令所有的数组元素都等于下标 值,即a[i]=i,当i不是素数时,令a[i]=0 。当输出结果时,只要判断a[i]是否等于零即可,如果a[i]=0,则令i=i+1,检查下一个a[i]。
筛法是计算机程序设计中常用的算法之一。
- 3楼网友:拾荒鲤
- 2021-04-04 00:20
素数也叫质数,指大于1的自然数,除了1和其本身,没有其它因数的数。
#include
#include
void mian()
{
int m,k,i;
printf("请输入一个大于2的自然数\n");
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>k)
printf("质数\n");
else
printf("合数\n");
}PS :不懂还可继续问。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯