素数和c语言
Ⅰ 求1到100以内所有素数之和(c语言)
1到100之间的所有素数之和;素数曾称质数。一个大于1的正整数,如果除了1和它本身以外,不能被其它正整数整除,就叫素数。1不是素数。
2+3+5+7+11+13+17+19+23+29+31+37+41+43+47+53+59+61+67+71+73+79+83+89+97=1060,100以内所有素数之和是1060
#include"stdafx.h"
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int isPrime(int n)//求素数,这是最经典的算法代码。
{
int j;
for(j=2;j*j<=n;j++)
if(n%j==0)
return 0;
return 1;
}
int main(void)
{
int i,sum=0;
for(i=2;i<100;i++)
if(isPrime(i))
{
sum+=i;
printf("%d ",i);
}
printf("%d ",sum);
getchar();
system("pause");
return 0;
}
运算输出:
(1)素数和c语言扩展阅读:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
Ⅱ (c语言)求素数和
你s=s+x;
放的位置不对,应该这样放:
#include
void
main()
{
int
x,n=10,i,s=0;
for(x=3;x<=n;x++)
{
for(i=2;i
=x)
{
printf("%d+",x);
s=s+x;
}
}
printf("\b=%d\n",s);
}
补充:
在用外层的for计算下一个的时候,要把内层for判断出来的素数累加起来啊
否则,计算到下一个的时候,前一个就丢了啊
所以,累加的那句代码,应该在外层for循环的里面,内存for循环的外面(后面)啊
Ⅲ C语言求素数和
main()
{
int i,m,j; //增加一个变量,见后面说明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 这里i值被重新赋值,你原来的i值找不到了!如果是素数,怎么输出呢?
for(j=2;j<=m;j++) //换一个变量,不要影响要检查的数据i
if(j%m!=0) //改成j
; //这样写,会让你更清楚,这句如果j不能整除m,就啥也不干,象你所说回到下一个循环检查。
else
break; //加上这两句,如果能整除则说明:i不是素数!!就不要再去检查了。
if ( j > m ) //加上这句,如果检查所有的j全部不能整除m,循环结束后,j一定大于m,这时的i才是素数
printf("%d",i);
}
getch();
}
Ⅳ 100以内的素数之和用C语言怎么编写程序
这个问题可以分成两部分解决,一个是判断素数,另一部分是实现累加和输出。
一、判断素数。
有以下两种常见的判断素数的方法。
1 通过数学定义判断,即查找所有因子,如果存在除1及本身以外因子,则非素数。
代码如下:
#include<math.h>//用到开平方函数,引用对应的数学头文件
intis_prime(intn)
{
inti;
for(i=2;i<=(int)sqrt(n);i++)//根据数学定义,除本身外,其它因子不可能比平方根更大,所以只需要判断不大于平方根的值即可。其中sqrt为求平方根函数。
if(n%i==0)return0;//只要有一个符合条件的因子,则非素数,返回0。
return1;//该数为素数。
}
这个算法可以应用于任何情况。
2 素数筛。
这种算法的原理是,所有素数的倍数都不是素数。
先假定所有数均为素数,然后去掉已知素数的倍数,最终得到一定范围内所有素数。
代码如下:
intmap[100];//数据规模,这里使用题目中的100,实际上应该是标记0-100,也就是101个单位,但是100是已知的非素数,所以用100个元素就足够了。
voidmake_map(void)
{
inti,j;
map[1]=1;//1不是素数。
for(i=2;i<100;i++)
{
if(map[i])continue;//对于已知的非素数,不做处理
for(j=i*2;j<100;j+=i)
map[j]=1;
}
}
intis_prime(intn)
{
if(map[1]==0)make_map();//如果1没有被标记为非素数,那么表示map没有生成,需要生成map。
returnmap[n]==0;//如map[n]为0,则n为素数
}
这种算法空间开销与数据规模成正比,当数据规模比较大时并不适用。
但对于数据规模小且素数判断频繁的情况,具有更高的时间开销优势。
二、累加。
这部分可以放置于主函数。调用上述任意一种素数判断函数皆可。
#include<stdio.h>
intmain()
{
intsum=0;//累加结果
inti;
for(i=2;i<100;i++)
if(is_prime(i))sum+=i;//累加素数。
printf("sum=%d ",sum);//输出结果。
}
最终输出sum=1060
Ⅳ 用C语言如何判断素数
素数又称质数,所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
思路1、判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2、判断方法还可以简化。
m 不必被2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果 m 不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。
原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。
例如16能被2、4、8整除,16=2*8,2小于 4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可。
两种思路的代码请看解析。
拓展资料:
素数(prime number)又称质数,有无限个。素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
网络——C语言
Ⅵ c语言怎么求素数
在C语言中求素数有很多种方法。刚入门的话,最基本的就是根据素数的定义来判断一个数是不是素数。要判断一个数n是不是素数,就用一个循环,从2一直到n -1,如果都不能整除n,那么n就是一个素数,否则就不是素数。
改进一点的方法就是只要判断到n/2就可以了。再高效一点的办法,就只要判断到根号n就可以了。判断的依据是相同的。
Ⅶ c语言中 素数和的程序怎么编
可以写一个判断n是否素数的函数,是素数就返回1(真)否则就返回0(假)。
在main()函数中用循环,检测指定范围内的每一个数,是素数的话就把它们累加起来。
#include<stdio.h>
int isprime(int n)
{int i;
for(i=2;i*i<=n;i++)
if(!(n%i))return 0;
return n>1;
}
int main()
{int i,a,b,s=0;
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
if(isprime(i))
{printf("%d ",i);
s+=i;
}
printf(" %d~%d之间的素数和=%d ",a,b,s);
return 0;
}
Ⅷ C语言中,何为素数何为非素数用C语言如何表示
C语言中的素数和数学中的素数是一样的,即:除了1和它本身之外,不能被任何数整除的数(1不是素数)。也就是说素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。
非素数的定义就很明了了,素数以外的数都是非素数,在C语言中,求素数的方法,就是从2开始,依次判断该数是否可以被2以上到该数以下的数整除,如果可以,就不是素数,如果不可以被所有大于或等于2小于该数的整数整除,那么就是素数了
Ⅸ c语言求素数的算法
根据素数的性质,代码设计如下:
设计一:判断n是否能被1~n-1整除,不能整除为素数
#include<stdio.h>
int main()
{
int i, n;
scanf("%d", &n);
for (i = 2; i < n ; i++)
{
if (n%i == 0)
break;
}
if (i < n) printf("This is not a prime.");
else printf("This is a prime.");
return 0;
}
设计二:判断n是否能被2~√n间的整数整除,不能整除为素数
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
double k;
scanf("%d", &n);
k = sqrt(n);
for (i = 2; i <= k;i++)
{
if (n%i == 0) break;
}
if (i <=k) printf("This is not a prime.");
else printf("This is a prime");
return 0;
}
(9)素数和c语言扩展阅读:
1.素数的定义是只能被1和他本身整除,1不是素数.因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,这是一个算法.(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)
2.如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。由此可以得到一个法2较快的素数判断算法
Ⅹ 用C语言如何判断素数
按照如下步骤即可用C语言判断素数:
1、首先打开visual C++ 6.0,然后点击左上角的文件,再点击新建。