c语言找出素数
① c语言 输出1到100之间的全部素数
有三种方法:
1、输出1-100以内的素数:
(1)c语言找出素数扩展阅读:
在这个小程序中主要用到的是for循环
for 循环语句的一般形式为:
for (表达式1; 表达式2; 表达式3)
{
语句;
}
需要注意的两点:
1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。
2)for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。
因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于 for 循环了。
② C语言如何求素数
若x不是素数,
则
x=a*b,
我们可以要求
a<=b,
于是
a*a
<=
a*b,
也就是
a*a
<=
x
所以
a
<=
根号x.
如果在
for(a=2;
a*a<=x;
a++)
之内都找不到可以整除x的a
(也就是满足
x%a==0
的a)
x就必定是素数了.
如果在
for(a=2;
a<=x;
a++)
之内找当然也可以,
只是浪费时间而已.
③ C语言求素数
/*求素数的三种方法
一:for(i=2;i<=(n-1);i++)
if(n%i==0)i在2到n-1之间任取一个数,如果n能被整除则不是素数,否则就是素数
二:for(i=2;i<n/2;i++)
if(n%i==0) /*i在2到n/2之间任取一个数,如果n能被整除则不是素数,否则就是素数
三:for(i=2;i<(n=sqrt(n));i++)
if(n%i==0) /*i在2到sqrt(n)之间任取一个数,如果n能被整除则不是素数,否则就是素数,在下省了下面的输出步骤*/
/*在本程序中使用第三种方法来求解*/
#include <stdio.h>
#include <math.h>
int main(void)
{
int i; /*外循环*/
int j; /*内循环*/
int flag; /*素数标志,flag为1则此数为素数*/
flag = 0;
//int n;
i = 2;
while( i <= 100)
{
j = 2;
flag = 1; /*假设此数为素数*/
while(j <= (int) sqrt(float(i)))
{
if(0 == (i %j))
flag = 0; /*根据第三种算法可知次数不为素数*/
j ++;
}
if(flag)
printf("%d\t",i);
i++;
}
printf("\n");
return 0;
}
④ c语言求素数的办法只需解题思路
看你需不需要追求时间效率
是不是需要求超大的素数,int64 的有20位
甚至高精度情况下的素数,百位上千位
可以建立素数表来求
你仔细想想,任意一个整数都能分成几个素数的乘积,只由素数只有自己
所以,对于每个我们需要判断的数,只需要用素数表里的数来除即可
若都不能整除,那此数一定也是素数,那就把它加入素数表内
一直求下去就行,一般来说10000个数的素数表就能判断 int32内的素有数
因为素数表能判断素数的范围是 表内最大那个素数的平方
⑤ 如何求C语言素数
如果一个数是素数,只要判断他是否能被2到这个数的开方之间的数整除就行了。
int flag=0;
if(m==2){ //先判断是不是2
flag=1;
}
else{
for(int i=2;i<=sqrt(m);i++){
flag=1;
if(m%i==0){ //不是素数
flag=0;
break;
}
}
}
return (flag==1)?m:-1; //判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数
如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。
⑥ c语言求素数
【例】判断m是否素数。
N-S流程图:
#include
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+1)
printf(“%d
is
a
prime
number\n”,m);
else
printf(“%d
is
not
a
prime
number\n”,m);
}
【例】求100至200间的全部素数。
#include
main()
{
int
m,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
{printf(“%d”,m);
n=n+1;}
if(n%5==0)printf(“\n”);
}
printf(“\n”);
}
⑦ 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;
}
(7)c语言找出素数扩展阅读:
1.素数的定义是只能被1和他本身整除,1不是素数.因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,这是一个算法.(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)
2.如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。由此可以得到一个法2较快的素数判断算法