c语言习题 求n到m之间所有的素数及其总数
发布网友
发布时间:2022-07-24 08:56
我来回答
共2个回答
热心网友
时间:2023-10-08 23:18
我看主要是sqrt的问题,你想想如果16,sqrt(16)==4,那么从2到4有多少个素数呢,还有 printf("一共有%d个",k);
这个最好放在循环外面,不然太混乱了,你试试我写的程序
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i,k=0,x=0;
double j;
printf("求n到m之间所有的素数,请您依次输入n与m的值");
scanf("%d%d",&n,&m);
for(;n<m;n++)
{
j=n/2;
for(i=2;i<=j;i++)
{
if(n%i==0)
break;
}
if(i>=j+1)
{
k++;
printf("素数有:%d\n",n);
}
}
printf("一共有%d个",k);//这个放在for循环里面太混乱了
fflush(stdin);//清除缓冲区
getchar();
return 0;
}
热心网友
时间:2023-10-08 23:19
手上没有编译器。不过:你的k没有赋初值。
#include<stdio.h>
#include<math.h>
void main()
{
int m,n,i,k=0,x=0;
double j;
printf("求n到m之间所有的素数,请您依次输入n与m的值");
scanf("%d%d",&n,&m);
for(;n<m;n=n+1)
{
j=sqrt(n);
for(i=2;i<=j;i++)
if(n%i==0)
break;
if(i>=j+1)
{
k++;
printf("素数有:%d\n",n);
}
printf("一共有%d个",k);
}
}
======================
找到编译器了。
#include<stdio.h>
#include<math.h>
void main()
{
int m,n,i,k=0,x=0;
double j;
printf("求n到m之间所有的素数,请您依次输入n与m的值");
scanf("%d%d",&n,&m);
for(;n<m;n=n+1)
{
j=(int)sqrt(n); /*转成整型*/
for(i=2;i<=j;i++)
if(n%i==0)
break;
if(i>=j+1)
{
k++;
printf("素数有:%d\n",n);
}
}
printf("一共有%d个",k); /*移到循环外*/
}