C语言求助,《求m和n之间的所有素数》

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言求助,《求m和n之间的所有素数》相关的知识,希望对你有一定的参考价值。

【问题描述】
输入两个正整数m和n(m≥1,n≤500),输出m和n之间的所有素数,每行输出6个。素数是指只能被1和自身整除的正整数,最小的素数是2。
【输入形式】
从键盘输入两个正整数m和n。
【输入输出样例1】(下划线部分表示输入)
Input m: 1
Input n: 35
2 3 5 7 11 13
17 19 23 29 31
【样例说明】
每行输出6个正整数,每个正整数按%4d格式输出。
输入提示符后要加一个空格。其中“:”后要加一个且只能一个空格。
英文字母区分大小写。必须严格按样例输入输出。
我的程序:
#include<stdio.h>
#include<math.h>
int main(void)

int m,n,c,i,j;
c=0;
printf("input m: ");
scanf("%d",&m);
printf("input n: ");
scanf("%d",&n);
for(i=m;i<=n;i++)
for(j=2;j<=i/2;j++)
if(i%j==0)
break;
if(j>i/2&&i!=1)
printf("%4d",i);
c++;

if(c!=0)
if(c%6==0)printf("\n");

return 0;

问题是“\n”会输出好几个,究竟是为什么呢?如图,求指教!!
、n

你的第二层for循环后面好像缺失一个“”;要注意代码格式,你这个代码格式读起来很痛苦哦

思路应该是:第一层for循环是循环m到n之间,第二层for循环判断这个数是不是素数,是的话就输出;然后再判断这一行有没有6个了,有6个就输出一个换行追问

汗,我是新手菜鸟,你能帮我改正一下吗?就发改正部份就行

参考技术A 因为每次不是质数的时候你还是判断是不是c是6的倍数,这个应该放在C++后面追问

汗,我是新手菜鸟,你能帮我改正一下吗?就发改正部份就行

追答

#include
#include
int main(void)

int m,n,c,i,j;
c=0;
printf("input m: ");
scanf("%d",&m);
printf("input n: ");
scanf("%d",&n);
for(i=m;ii/2&&i!=1)
printf("%4d",i);
c++;
if(c%6==0)printf("\n");//每次有素数输出再判断要不要换行



printf("\n");
return 0;

追问

按你的改法运行后还是不对啊……\n还是运行了好几次

追答

追问

嗯嗯,懂了,很谢谢你!谢谢

本回答被提问者采纳

C语言 将所有大于1小于整数m的非素数存入所指数组中,非素数的个数通过n返回

例如,当m=17时,非素数的个数为9个,且x数组的值应为:4 6 8 9 10 12 14 15 16

#include <stdio.h>
void fun(int x[],int m,int *n){
	int i,j,k=0; //数组下标从0开始
	for(i=0;i<m;i++){ //1~m 之间的数
		for(j=2;j<i;j++){ //判断i是非素数,存入数组,数组下标++
			if(i%j==0){			
				x[k++]=i;
				break;
			}
		}		
	}
	*n=k; //返回非素数的个数
}
void main(){
    int i,n,m,count=0; 
	int x[128]; 
	printf("请输入一个数:");
	scanf("%d",&m);
	printf("非素数如下:\\n");
	for(i=0;i<n;i++){
		fun(x,m,&n);
		printf("%d\\t",x[i]);
		count++;
		if(count%5==0){
			printf("\\n");
		}
	}
}

在这里插入图片描述

以上是关于C语言求助,《求m和n之间的所有素数》的主要内容,如果未能解决你的问题,请参考以下文章

如何用C语言求1至100所有素数的和?

输出[m,n]之间的素数,用c语言编程怎么写。谢谢,

C语言 输出n到m之间的所有素数

C语言求范围之内素数的和与个数?

c语言 输出[m,n]之间素数 的程序

c语言从n个数中选m个数的组合