C语言中筛选法是怎么考虑的,就是分几个步骤考虑筛选出素数

作者&投稿:藤思 (若有异议请与网页底部的电邮联系)
~ 先解释一下筛选法的步骤:<1>
先将1挖掉(因为1不是素数)。<2>
用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。<3>
用3去除它后面的各数,把3的倍数挖掉。<4>
分别用4、5…各数作为除数去除这些数以后的各数。上述操作需要一个很大的容器去装载所有数的集合,只要满足上述条件,即2的N次方的全部置0,3的N次方的全部置0,4的N次方的全部置0.。。。一直到这个数据集合的末尾,这样一来不为0的数就是素数了,然后按下标在里面进行查找就好了筛选法程序如下
#includeint
main()
{
int
x[100001];
int
temp,n,
i;
//初始化数组
for(i=0;i<100001;i++)
x[i]=0;
//初始化数组完成
/*
预计结果,
数组中质数为0,其它为1
*/
x[0]=x[1]=1;//因为
0和1不能通过计算得到,所以只能手工置1
,1即不是合数也不是质数for(i=2;i<100001;i++)
{//循环数组中的每个数
if(x[i]==0){//如果该数所存的值为0,即第一次接触此数
temp=2*i;//将它的二倍,及n倍(要小于100000)
,都置为1,因为这些数都能被i整除
while(temp<=100000)
{
x[temp]=1;
temp+=i;
}
}
}
scanf("%d",&n);
while(n
!=
0)
{
if(x[n]==0)
printf("素数\n");
else
printf("合数\n");
scanf("%d",&n);
}
return
0;
}如果你觉得这个方法不好理解,你可以用上面他们写的那些常规算法,但是数字过大的话,算起来是很慢的

先解释一下筛选法的步骤:
<1>
先将1挖掉(因为1不是素数)。
<2>
用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
<3>
用3去除它后面的各数,把3的倍数挖掉。
<4>
分别用5…各数作为除数去除这些数以后的各数。
上述操作需要一个很大的容器去装载所有数的集合,只要满足上述条件,即2的N次方的全部置0,3的N次方的全部置0,4的N次方的全部置0.。。。一直到这个数据集合的末尾,这样一来不为0的数就是素数了,然后按下标在里面进行查找就好了


...给定整数,判断是否为素数”用C语言怎么编程啊~
void main(){ int m,i,k;scanf("%d",&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf("%d is a prime number\\n",m);else printf("%d is not a prime number\\n",m);getch();} ②:筛选法:筛选法步骤(假设求100以内全部素数):把100以内2的倍数全部...

求一个数的质因数。c语言编程
这个问题,首先,用筛选法找出质素,然后,遍历这个素以内的所有素数,找到质因数!include <stdio.h> define MAX 1001 char a[MAX];int main(){ int i,j;for(i = 2; i < MAX; i++){ if(a[i] == 0)for(j = i+i; j < MAX; j += i)a[j] = 1;} int n;printf("Please...

重要词句含义理解 如何理解关键词句的含义
重要词句含义理解 如何理解关键词句的含义1.如何理解关键词句的含义如何理解关键词句的含义 所谓“词语的含义”,不是指一般的词典义,而是这个词语在一定的语言环境中的临时的、具体的、附加的、动态的、不同于词典

C语言:将100~200之间的素数输出
逻辑错误,准确位置为14行,正确代码如下:#include<stdio.h>int main(){int i = 0;for (i=100; i<=200; i++){int j = 0;for (j=2; j<=i-1; j++){if (i%j == 0){break;}}if (j>=i){printf("%d",i);}}return 0;} ...

如何理解关键词句的含义
三、遵循规律筛选法语言内部都是有一的规律可循,比如词语本身使用的规律,词语间搭配的规律,事件发生的规律等等,遵循这些规律,筛选最佳词语,是作者创作的必然,我们遵循这些规律,对于词语的理解就如游刃有余。例三:请仔细揣摩文章,然后将“儒教”、“儒术”、“儒学”分别填在第⑧段的括号里。[相关文段]⑧可以得之...

初中生阅读理解的技巧和方法
4. 分析文章的结构和语言特色:学生需要了解文章的结构和语言特色,这有助于学生更好地理解文章的内容和意义。二、阅读理解的解题方法 1. 题目分析法:学生需要仔细阅读题目,分析题目要求,然后有针对性地查找文章中的相关信息。2. 信息筛选法:学生需要从文章中筛选出与题目相关的信息,并进行整理和...

初中作文怎么写才能得高分
①写日记。写日记是一种较好的练笔方式,坚持写日记、记录学习和生活,以后作文就有了坚实的基础。②模仿。模仿就是有针对性的参考、借鉴他人的文章,它可以帮助我们降低了写作的难度。对于写作水平不高、不知道怎么写作文的学生,建议去模仿和借鉴范文,培养写作兴趣、思路、手法,逐渐地提高写作能力。

c语言如何用for,while和do-while输出101-200之间的所有素数
思路:1,从2开始到n-1一个一个除 2,从2开始一直除到n\/2 3.从2开始除到开方以下是第3种思路,且没用函数 #include

1-1000的素数用pascal语言怎么求?
用筛选法 直接打的 理解下思路就行了 f:array[0..1000] of boolean;先初始化 fillchar(f,sizeof(f),1);for i:=2 to 1000 do if f[i] then \/\/ i是素数 begin writeln(i);2到1000里i的倍数都设为false;end;

...并输出这些数。 用C++6.0软件编写C语言程序
int m=0,k;printf("100~200之间的素数有:");for(int i=100;i<200;i++){ k=0;for(int j=2;j

美兰区18839006934: C语言中筛选法是怎么考虑的,就是分几个步骤考虑筛选出素数 -
滕桑泰宾: 1、先解释一下筛选法的步骤: 先将1挖掉(因为1不是素数). 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉. 用3去除它后面的各数,把3的倍数挖掉. 分别用5…各数作为除数去除这些数以后的各数.上述操作需要一个...

美兰区18839006934: C语言中筛选法是怎么一回事,请知道的详细讲一下 -
滕桑泰宾: 问题1. 可以定义为a[100] 那么改为for(i=0;i#includevoid main() { int i,j,k,count=0; int a[101]; for(i=0;i

美兰区18839006934: C语言中的筛选法是什么,它的思想中心是什么? -
滕桑泰宾: 有很多,其实不止是c语言,很多语言都有的,建议找本数据结构的书看看,会有很详细的介绍.筛选简单的说就是找一组数里的某个量,或者对数组进行排序.中心思想就是时间复杂度,空间复杂度最小.

美兰区18839006934: C语言中挑选法是怎样斟酌的就是分几个步骤斟酌挑选出素数
滕桑泰宾: 编制用筛法求1-n(n≤200)之内素数的程序.分析:由希腊著名数学家埃拉托色尼提出的所谓“筛法”,步骤以下:①将所有候选数放入筛中;②找筛中最小数(必为素数)next,放入集合primes中;③将next的所有倍数从筛中筛去;④重复②~④...

美兰区18839006934: 筛选法的C语言实现筛选法程序步骤 -
滕桑泰宾: 先解释一下筛选法的步骤: <1> 先将1挖掉(因为1不是素数). <2> 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉. <3> 用3去除它后面的各数,把3的倍数挖掉. <4> 分别用5…各数作为除数去除这些数以后的各数. 上述操作需要一个很大的容器去装载所有数的集合,只要满足上述条件,即2的倍数大于1的全部置0,3的倍数大于1的全部置0,4的倍数大于1的全部置0....一直到这个数据集合的末尾,这样一来不为0的数就是素数了,然后按下标在里面进行查找就好了

美兰区18839006934: C语言中的帅选法什么意思
滕桑泰宾: 筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法.据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子. 具体做法是:先把N个自然数按次序排列起来.1不是质数,也不是合...

美兰区18839006934: C语言筛选法疑问
滕桑泰宾: 1.输出格式中,不管有没有碰到素数,n都一直在自加if(a[i]!=0) printf("%-3d",a[i]); n++;if(n==5){ printf("\n");n=0; }//效果等同于if(n%5==0) printf("\n");应该改为:if(a[i]!=0){printf("%-3d",a[i]); n++;if(n==5) {printf("\n");n=0; }...

美兰区18839006934: C语言筛选法判断质数 -
滕桑泰宾: 楼上的别在那误导人,你那叫筛选法吗?先解释一下筛选法的步骤:<1> 先将1挖掉(因为1不是素数).<2> 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉.<3> 用3去除它后面的各数,把3的倍数挖掉.<4> 分别用4、5…...

美兰区18839006934: c语言筛选法 -
滕桑泰宾: scanf("%s",name);//输入名字 for(i=0;i<人数;i++) { //比较名字 if(strcmp(stu[i].name,输入的名字)==0) { //打印 printf(.............); } }

美兰区18839006934: 新人:关于C语言用“筛选法”求100以内的素数的一点疑问,希望能人解答. -
滕桑泰宾: 1、a[i]是除数,不能为0,至于a[j] 则如果已经是0,说明不是素数已经被挖掉,没必要再去求余判断. 2、2和3都是素数.2是第一个素数,筛选法的算法就是这样子的: 从第一个素数开始往后走一轮,把所有能整除第一个素数的筛掉.然后换第二个素数. 那么如何判定第二个素数? 剩下非0的、最靠近第一个素数的就是第二个素数,然后把第二个素数作为除数,再筛一遍.就是这样,最后剩下的只有素数了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网