C语言新手 给定一段连续的正整数,请判断其中素数的个数
答案:3 悬赏:40 手机版
解决时间 2021-02-04 19:19
- 提问者网友:末路
- 2021-02-04 00:05
输入数据包含2个正整数A和B(0
#include
#include
void main()
{
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 < z; i++)
{
x++;
a[i] = x ;
}
for(i = 0;i < z;i++)
{
if(a[i] > 0)
{
for(j = 2;j <= sqrt(a[i]);j++)
{
k = a[i] / j;
if(k == 0)
{
goto s;
}
m++;
}
}
s:;
}
printf("%d", m);
}
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-02-04 00:56
改过的,有注释,对照看……
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 < z; i++)
{
x++;
a[i] = x ;
}
for(i = 0;i < z;i++)
{
if(a[i] > 0)
{
for(j = 2;j <= sqrt(a[i]);j++)
{
//k = a[i] / j;/错了,应为%
k = a[i] % j;//这个才对.
if(k == 0)
{
goto s;
}
//m++;//地方不对,所以逻辑错.
}
m++;//放到这里才对.
}
else{//加这个判断以完善逻辑.
printf("Negative!\n");
return;
}
s:;
}
printf("%d", m);
}
全部回答
- 1楼网友:雪起风沙痕
- 2021-02-04 02:36
#include
int prime(int x) //检查是否为质数的函数,输入参数为检查对象
{
int i;
for (i = 2; i<=x / 2; i++)
//对于大于等于2、小于等于参数1/2的整数(大于参数1/2的不可能是参数的因数)
if (!(x%i)) //如果参数除以该数的余数的非不为0,即被整除、余数为0
return 0; //那么不是质数,返回0
return 1; //结束循环仍未有大于1的因数出现,是质数,返回1
}
int main()
{
int a, b, i, n = 0;
printf("enter the interval [a, b]:\nleft border a: ");
scanf("%d", &a); //输入区间的左边界(注意要是整数)
printf("right border b: ");
scanf("%d", &b); //右边界
for (i = a; i <= b; i++) //检查闭区间内的每一个整数
if (prime(i)) n++; //如果prime函数返回值为1则计数器自增1
printf("the number of prime numbers under [%d,%d] is %d.\n", a, b, n);
//输出结果
return 0;
} 利用一个prime函数完成对整数是否为质数的检查
#include
#include
int main() {
long int i,j,flag,m,n,t,cnt = 0;
scanf("%d%d",&m,&n);
if(m > n) { t = m; m = n; n = t; }
for(i = m; i <= n; ++i) {
if(i < 2) continue;
if(i == 2) { printf("%6d",2); ++cnt; continue; }
flag = 1;
for(j = 2;j <= sqrt(i) && flag; ++j) {
if(i % j == 0) flag = 0;
}
if(flag) {
if(cnt && cnt % 10 == 0) printf("\n");
printf("%6d",i);
++cnt;
}
}
if(cnt % 10) printf("\n");
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯