当前位置:首页 » 编程语言 » c语言打印区间素数只对一半
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言打印区间素数只对一半

发布时间: 2022-11-16 17:50:35

1. c语言输出100到200之间的素数

解题思路:

首先先找出来100~200以内的所有整数,再让这些整数对除了1和它本身以外的数求余,如果有能整除的就不是素数,否则就为素数。

先找出来100到200的所有整数,都为i

用i去对除了1和它本身以外的数求余。

正确的代码:

#include<stdio.h>

int main()

{

int conut = 0;

int i = 0;

for(i=100; i<=200; i++)

{

int j = 0;

for(j=2; j<i; j++)

{

if(i%j == 0)

break;

}

if(j==i)

{

conut++;

printf("%d ", i);

}

}

printf(" ");

printf("素数个数为:%d ", conut);

return 0;

}

第二个if语句的判断条件应该是j==i;而不是i%j 。

(1)c语言打印区间素数只对一半扩展阅读:

实现的其他方法:

需要用到sort函数,也就是开平方根函数。头文件为#include<math.h>。 显而易见,任何一个数,每一对因子都是由这个数开平方后的数的左右各一个组成,所以,在求余过程中,只需要对从2到开平方之后的数求余即可。遇到可以整除的就不是素数,否则就为素数。

代码:

#include<stdio.h>

#include<math.h>

int main()

{

int count = 0;

int i = 0;

for(i=100; i<=200; i++)

{

int j = 0;

for(j=2; j<=sqrt(i); j++)

{

if(i%j == 0)

break;

}

if(j > sqrt(i))

{

count++;

printf("%d ",i);

}

}

printf(" ");

printf("素数个数为:%d", count);

return 0;

}

2. 用C语言编写一个判断素数的函数,主函数中利用这个函数,打印出100与200之间的所有素数.

#include <stdio.h>
#include <math.h>

int isPrime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
return 0;
return 1;
}

void printPrime(int a,int b)
{
int i;
for(i=a;i<=b;i++)
if(isPrime(i))
printf("%d ",i);
printf("\n");
}

int main()
{
int a,b;
printf("请输入你要打印的素数区间:\n");
scanf("%d %d",&a,&b);
printPrime(a,b);
return 0;
}

3. C语言判断并输出输入区间上的素数

逻辑太乱!

  1. 把find=1;提前到for(i=2...前面。

  2. if(find==1&&i<n)

    printf("%ld ",n);

    后面的break;删除。

  3. 把上面这句

    if(find==1&&i<n)

    printf("%ld ",n);

    移到后面的}后面。

  4. 把上面这句if(find==1&&i<n)中的&&i<n删除,那永远是成立的。不删也不错。

4. 用C语言输出100到200之间的素数

应该是对素数的定义没有理解吧。

素数,是定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

简而言之,素数就是只能被1和它自己相乘得到的数。所以,除了1和它自己之外,它对其它数取余数,结果都不是0。

同时,无论什么数,除了它自己之外,最大的因数肯定是它的一半,所以只需要查找到它的一半就可以了,不必从1查找到它自己。而且,这里是找素数,如果它的因数包括它自己的一半与数字2的话,那它也不会是素数了,所以查找的界限定为比如 i/2 是不会有遗漏的。

至于你的原来的代码里为什么是它自己开平方,我数学记得不多了,不是太清楚。

然后,就是根据定义去判断一个数是不是素数,那么,就必须让它与从2到它的一半的所有的数的余数都不为0,反应到代码里就是不仅仅要 “i % n != 0”,而且还要全部能除的数都除一遍,也就是“ n == k”,这个时候,才能确定这个数是素数了。

#include<stdio.h>
#include<math.h>

intmain()
{
inti,k,n,m=0;
for(i=101;i<=200;i=i+2)
{
k=i/2;//被除的数,小于等于它的一半
for(n=2;n<=k;n++)
{
if(i%n==0)
break;
elseif(n==k)//要把从2到k的数都除一遍才能确定
{
printf("%8d",i);
m++;
if(0==m%10)//把这个if输出换行放到elseif里面来,要不然后面会多很多空行
printf(" ");
}
}
}
printf(" ");
return0;
}

输出截图:

5. c语言 求[500,800]区间内的素数

#include<stdio.h>
#include<conio.h>
#include<math.h>

intcountvalue(intaa[]){
inti,flag,j,cnt=0;
for(i=500;i<=800;i++){//;
flag=1;
for(j=2;flag&&j<=sqrt(i);j++)
if(i%j==0)flag=0;
if(flag)aa[cnt++]=i;
}
returncnt;
}

intmain(){
inti,cnt,c[500];
cnt=countvalue(c);
printf("素数总数=%d ",cnt);
for(i=0;i<cnt;++i){
if(i&&i%10==0)printf(" ");
printf("%5d",c[i]);
}
if(i%10)printf(" ");
getch();
return0;
}

6. C语言输出100到一千之间所有素数

首先打开CodeBlocks,创建一个新项目。项目语言,选择“c”,就可以写程序判断素数了,具体方法为:

1、创建好项目后,我们打开 “main.c”文件。

注意事项:

质数被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。

7. c语言编程输出区间 [m,n]内的素数,区间范围由用户输入,并统计所输出的素数总数.

#include<stdio.h>

#include <stdlib.h>

#include <math.h>

int isprime(int a)

{int i;

if(a<2)return 0;

for(i=2;i<=sqrt(a);i++)

if(a%i==0)return 0;

printf("%d ",a);

return 1;

}

int main()

{

int a,b=0,m,n;

printf("输入区间 [m,n]范围 ");

scanf("%d,%d",&m,&n);

for(a=m;a<=n;a++)

{

if(a==2)

{ printf("%d ",a);

b++;

}

else

{ b+=isprime(a) ;

}

}

printf(" 素数总数%d ",b);

return 0;

}

8. c语言打印素数

你悬赏都没有,很难做啊.
以后多向我提问吧.希望有悬赏.
#include
"stdio.h"
#include
<math.h>
#define
N
2033
int
Prime()
{
int
a[N];
int
i,
j;
//将到N-1间的数放在筛子中
i
=
2;
while(i<N)
{
a[i]=1;
i++;
}
i
=
2;
int
limit;
limit
=
(int)sqrt((double)(N-1));//计算除数的上限limit
while(i<limit)
{
//用i筛去筛子中i的倍数的数,不包括i本身
j
=
2*i;
while(j<N)
{
a[j]
=
0;
j
+=
i;
}
//找到筛子下一个数j
j
=
i+1;
while(a[j]==0&&j<=limit)
j++;
i
=
j;
}
//将筛子中的数打印出来
i
=
2;
int
times=0;
while(i<N)
{
if(a[i])
{
printf("%5d",
i);
times++;
if((times)%10==0)
printf("\n");
}
i++;
}
printf("\n");
return
0;
}
这个方法很不错

9. C语言 输出200以内的素数,,怎么做,跪求,下面是我自己写的。。

#include<stdio.h>
void main()
{
int num,i;
for(num=0;num<=200;num++)
{
if(num==0||num==1)
continue;
else
{
for(i=2;i<num;i++)
{
if(num%i==0)
break;
}/*这里*/
if(i==num)/*这里*/
printf("%5d\n",num);
}
}
}

10. 用C语言写一个调用函数,求出一个范围内的素数,范围自己输入

#include<stdio.h>
#include<math.h>
intprime(inta,intb)//求出整数a-b范围内的所有素数
{
inti=2,j,n;
for(j=a;j<=b;j++)
{
n=sqrt(j)+1;//j的平方数+1
i=2;
while(i<n)
{
if(j%i==0) //整除,退出循环
break;
i++;
}
if(i==n)//非整除退出循环,i肯定等于n
printf("%d",j); //j是素数,输出
}
}
intmain()
{
inta,b;
scanf("%d%d",&a,&b);//输入整数范围a-b
prime(a,b);
return0;
}