c语言求位数素数个数

C语言如何判断一个数是素数,输出100-200之间的全部素数。
C语言如何判断一个数是素数,输出100-200之间的全部素数。
& 素数又称质数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
#include&stdio.h&
int Sushu(int a);
int main()
int n = 0, res = 0;
for (n = 100; n & 200; n++)
res = Sushu(n);
if (res == 1)
printf(&%4d&, n);
system(&pause&);
int Sushu(int a)
int i = 0;
for (i = 2; i & i++)
if (a % i == 0)
//如果不是素数返回0
//如果是素数返回1
}& 此时,素数判断函数里的循环条件i是从2到a,即这个数本身,显然这是没有必要的。因为要判断这个数是不是素数根本不用这么大范围的循环条件,可以一步步的缩小循环条件的范围,使程序更高效。
& 我们知道如果一个数a不是素数,那么它一定可以看成是a/2之前的某个数的倍数,那么循环条件i的范围可以缩小为2到a/2。
for (i = 2; i & a / 2; i++)
if (a % i == 0)
}& 此时的程序效率要比之前的快一倍。然而我们还可以进一步提高它的效率。
因为如果一个数不是素数是合数,
那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。那么这时循环条件i的范围可以缩小为2到sqrt(a),值得注意的是这里一定要包括sqrt(a),要不然计算结果会有遗漏。
for (i = 2; i &=sqrt(a); i++)
if (a % i == 0)
在这里调用了库函数sqrt()来计算a的开方值,所以头文件要包含这个函数的库#include&math.h&。
我的热门文章
即使是一小步也想与你分享C语言新手 给定一段连续的正整数,请判断其中素数的个数输入数据包含2个正整数A和B(0
豆仔软妹纸淾
改过的,有注释,对照看……void main(void){long int a[100000],x,y,i,j,k,z,m,s;scanf("%d%d",&x,&y);z = y - x - 1;m = 0;for(i = 0; i < i++){x++;a[i] =}for(i = 0;i <i++){if(a[i] > 0){for(j = 2;j
是否可以加个if判断当x=1 , 2, 3 时
直接 m++ 呢?
j初值为 2 ,
1,和2就被排除了
为您推荐:
其他类似问题
扫描下载二维码c语言编程:求100之内的素数(要求用数组), c语言编程:求100之内的素数(要
c语言编程:求100之内的素数(要求用数组)
匿名 c语言编程:求100之内的素数(要求用数组)
测试已通过#include&=sqrt(num);n&i&lt,i;}void main(){ int arr[50];j,arr[i]);i++){
if(i%10==0)
printf(&&#47;=100;;i++)
if(isPrim(i)==1)
arr[j++]=i.h& for(i=2; int j=0; return 1;i++)
if(num%i==0)
return 0;%4d&quot.h& for(i=2;#include&int isPrim(int num){&#92;
for(i=0;);i&i&lt
for(a=2; i&&#92;a,count=0;
count++; i++) if(a%i==0) break,a);;%d & a&
printf(&=100; a++)
for(i=2,a;int main(){).h&stdio#include &
if(count%10==0) printf(&n&#include &lt
#include &stdio.h&void main(){
int arr[100];
int done=0;
for (i=2;i&100;i++)
for (j=0;j&n;j++){
if (i%arr[j]==0)
}}if (!done){
printf(&第%d个素数是%d&#92;n&,n+1,arr[n]);C语言问题,素数怎么用简单的C语言 输出100以内的素数,并且每5个数字为一行
静静等待hNO69
我给你写了个1000的~~~改一下就好啦~==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#include#includemain(){ int data[1000];/*储存数字*/ int i,j,count=0; for(j=2;j
为您推荐:
其他类似问题
扫描下载二维码c语言(3)
判断一个数是否为质数,首先我们需要知道质数的定义:对于大于1的数,如果除了1和它本身,它不能再被其它正整数整除,那么我们说它是一个质数
因此判断一个整数m是否是质数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。
#include &stdio.h&
int main(){
int a = 0;
int num = 0;
scanf("%d", &num);
for (int i=2; i&num-1;i++){
if (num % i == 0){
if (a==0){
printf("YES\n");
printf("NO\n");
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8011次
排名:千里之外
原创:27篇
转载:13篇}

我要回帖

更多关于 c语言求位数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信