c语言求素数函数
㈠ 用c语言如何判断素数
按照如下步骤即可用C语言判断素数:
1、首先打开visual C++ 6.0,然后点击左上角的文件,再点击新建。
㈡ 用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语言:输出1000~2000之间的所有素数,每行输出8个,要求调用求素数函数。
#include <stdio.h>
int sushu(int n)
{
int i;
for(i=2;i<n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int main ()
{
int n,m,j=0;
for(n=1000;n<=2000;n++)
{ m=sushu(n);
if(m==1)
{
printf("%d ",n);
j++;
if(j%8==0)
printf(" ");
}
}
return 0;
}
(3)c语言求素数函数扩展阅读:
定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
性质:素数大于等于2 不能被它本身和1以外的数整除。
函数在编程中的定义:
函数过程中的这些语句用于完成某些有意义的工作——通常是处理文本,控制输入或计算数值。通过在程序代码中引入函数名称和所需的参数,可在该程序中执行(或称调用)该函数。
类似过程,不过函数一般都有一个返回值。它们都可在自己结构里面调用自己,称为递归。
大多数编程语言构建函数的方法里都含有函数关键字(或称保留字。
参考资料来源:网络-函数
㈣ C语言编写一个求素数函数1至1000之间
代码如下:
#include<stdio.h>
intfoundit(inti) //按照题意,定义了一个函数,判断是否素数
{
intavg;
intk;
avg=(int)sqrt(i);
for(k=3;k<=avg;k+=2)//直接从3开始,因为i是奇数。
if(i%k==0)//余数为0,说明不是素数
return0;
return1;
}
intmain()
{
inti; //循环变量
intsushu=2; //2是素数,直接保存下来。
for(i=3;i<1000;i+=2)//扫描3到1000之间的所有奇数
{
if(foundit(i)==1)
{
if(i-sushu==2)
printf("%d和%d、",sushu,i);
sushu=i;
}
}
return0;
}
运行的结果:
3和5、5和7、11和13、17和19、29和31、41和43、59和61、71和73、101和103、107和109、137和139、149和151、179和181、191和193、197和199、227和229、239和241、269和271、281和283、311和313、347和349、419和421、431和433、461和463、521和523、569和571、599和601、617和619、641和643、659和661、809和811、821和823、827和829、857和859、881和883
㈤ 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;
}
(5)c语言求素数函数扩展阅读:
1.素数的定义是只能被1和他本身整除,1不是素数.因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,这是一个算法.(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)
2.如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。由此可以得到一个法2较快的素数判断算法
㈥ 用c语言编程序,用函数求素数,调用函数
#include<stdio.h>
#include<math.h>
//判断是否为素数的函数
intisPrime(intn)
{
inti=2;
while(i<=(int)sqrt(n))
{
if(n%i==0)
return0;//不是素数,直接返回0
else
i++;
}
return1;
}
intmain()
{
intn,i;
printf("输入一个正整数:");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(isPrime(i))//调用函数,如果该数为素数,则输出
printf("%d",i);
}
printf(" ");
return0;
}
示例运行结果:
输入一个正整数: 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
㈦ 求素数的C语言程序!
C语言-寻找素数
附代码:
#include<stdio.h>
#include<math.h>
int main()//原理:设ab=c,a<b,则有a<根号c<b。若设a恒小于根号c,则只需判断a是否为因数
{
int a, b;
printf("请按从小到大输入两个素数:");
scanf_s("%d %d", &a, &b);
int n = 0,m=0,sum = 0;
double i, j;//i是从a到b的待筛选数,j是从2到根号i的除数,要判断j是否为i的因数
for (i = a; i <= b; i++)
{
m = 0;
int c = int(pow(i, 0.5));
for (j = 2; j <= c; j++)
{
if ((i / j - int(i / j)) == 0.0)
{
m++;//m是i被从2到根号i的j除了之后,商为整数,即发现j是i的因数的次数
}
}
if (m==0)
{
printf("找到素数:%d
", int(i));
n++;
sum = sum + i;
}
}
printf("大于等于%d,小于等于%d的素数的个数为:%d
", a, b, n);
printf("它们的和为:%d", sum);
return 0;
}
㈧ 用c语言编程序,用函数求素数,调用函数是什么
#include<stdio.h>
#include<math.h>
int fun(int n)
{ int i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1;
}void main()
{
int n;
printf("请输入一个数:\n");
scanf("%d",&n);
if(fun(n))
printf("该素数是:%d",n);
else
printf("该数不是是素数:\n");
}
㈨ C语言如何使用自定义函数判断素数
#include <stdio.h>
int fun(int x)//
{
if(x<2)
return 0;//返回0,非素数
for(int i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;//返回1,素数
}
int main()
{
int n;
scanf("%d",&n);
if(fun(n)==1)
printf("%d是素数 ",n);
else
printf("%d不是素数 ",n);
return 0;
}
㈩ c语言中如何求素数
#include<stdio.h>
#include<math.h>
void main() // 这里不要搞错了,main
{
int i,n;
printf("输入一个整数n");
scanf("%d",&n);
n=abs(n);
if(n>2)
{
for(i=2;i<n;i++)// 在for下面跟个if判断,如果你输入4的话,这个程序打印两次4不是
if(n%i==0&&n==i)
scanf("%d是素数",n); break ;// 这里应该是printf了吧,
else
scanf("%d不是素数",n); break;// 这样会比较好点
}
else
scanf("%d不是素数",n);// 2就不是素数么,
}
这样也有问题,当你输入5的时候,for语句先判断能否整除2,不能整除2的话,就打印不是素数,写个函数是比较好的方法