C路练习之循环结构素数问题(输出所有素数与指定范围内的素数个数)

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

指定范围内的所有素数(多组数据)
描述
有两个整数a,b(2<=a<b),输出整数区间[a,b]内的所有素数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

现在已知有多组数据,请依次处理。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入
有多组数据(用for循环),每组2个整数a,b。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出
每组数据输出结果(素数间逗号分隔)后换行。

#include<stdio.h>
int main(){
    int a,b,flag,ret;
    do {
		ret = scanf("%d%d", &a, &b);
		if (ret == 2) {
		    flag=0;
			for (int i = a; i <= b; i++) {
				for (int j = 2; j < i; j++)
					if (i % j == 0)
						break;
				if (i == j) {
					if (flag)
						printf(",%d", i);
					else {
						printf("%d", i);
						flag = 1;
					}
				}
			}
			printf("\n");
		} 
		else
			break;
	} while (1);
    return 0;
}

在这里插入图片描述
指定范围内素数个数
描述
编程输入两个正整数a和b(2<=a<b<=999999),输出二者之间的素数的个数。

#include<stdio.h>
#include<math.h>
int main(){
    int a,b,t,gs=0;
    scanf("%d%d",&a,&b);
    for(int i=a;i<=b;i++){
        t=sqrt(i);
        for(int j=2;j<=t;j++)
            if(i%j==0)
                break;
        if(j==t+1)
            gs++;
    }
    printf("%d\n",gs);
    return 0;
}

在这里插入图片描述


版权声明:本文为weixin_62196200原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。