
我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主
欢迎各位 👍点赞 ⭐收藏 📝评论
特别标注:本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下我的<C语言基础语法>专栏。 关注博主,学习不迷路哦
目录
一、输入一个数,怎么判断是否为素数
二、如何输出100以内的素数
三、如何输出前50个素数
四、 凑硬币
方案1——得到多种结果
方案2(接力break)——只得到一种结果就结束
方案3——goto语句
一、💠输入一个数 判断是否为素数💠
素数:只能被1和自己整除的数,不包括1 2,3,5,7,11,13,17,19.
素数(1)输入一个数,判断是否为素数
代码示例:
#include <stdio.h>
int main()
{
	int x;
	int i; 
	printf("请输入一个数:");
	scanf("%d",&x);
	
	int isPrime = 1;	//x是素数
	for (i =2; i < x; i++){
		if (x % i == 0){
			isPrime = 0;//x不是素数 
			break;
		}
		break;
	}
	if (isPrime == 1) {
		printf("%d是素数\n",x);
	} else {
		printf("%d不是素数\n",x); 
	}
	
	return 0;
}二、💠如何输出100以内的素数💠
素数(2)如何输出100以内的素数
代码示例:
#include <stdio.h>
// 输出100以内的素数 
int main()
{
	int x;
	// 因为1不是素数,所以从2开始 
	for (x = 2; x<100; x++){
		int i;
		int isPrime = 1;	//x是素数
		for (i =2; i < x; i++){
			if (x % i == 0){
				isPrime = 0;//x不是素数 
				break;
			}
		}
		if (isPrime == 1){
			printf("%d ",x);
		}
	}
	printf("\n");
	
	return 0;
}运行结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
三、💠如何输出前50个素数💠
素数(3)如何输出前50个素数
代码示例:
#include <stdio.h>
// 输出前50个素数 
int main()
{
	int x = 2;
	int cnt = 0;
	// 因为1不是素数,所以从2开始 
	while (cnt < 50){
		int i;
		int isPrime = 1;	//x是素数
		for (i =2; i < x; i++){
			if (x % i == 0){
				isPrime = 0;//x不是素数 
				break;
			}
		}
		if (isPrime == 1){
			printf("%d ",x);
			cnt++;
		}
		x++; 
	}
	printf("\n");
	
	return 0;
}运行结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229
四、🔷 凑硬币🔷
如何用 1 角、2 角和 5 角的硬币凑出 10 元以下的金额呢?
方案1——得到多种结果
代码示例:
#include <stdio.h>
int main()
{
	int x;
	int one,two,five;
	
	// scanf("%d",&x);
	x = 2;
	for (one = 1; one <= x*10; one++) {
		for (two = 1; two <= x*10/2; two++) {
			for (five = 1; five <= x*10/5; five++) {
				if (one + two*2 + five*5 == x*10) {
					printf("可以用%d个1角+%d个2角+%d个5角得到%d元\n",one,two,five,x);
				}
			}
		}
	}
	return 0;
}运行结果:
可以用1个1角+2个2角+3个5角得到2元
可以用1个1角+7个2角+1个5角得到2元
可以用2个1角+4个2角+2个5角得到2元
可以用3个1角+1个2角+3个5角得到2元
可以用3个1角+6个2角+1个5角得到2元
可以用4个1角+3个2角+2个5角得到2元
可以用5个1角+5个2角+1个5角得到2元
可以用6个1角+2个2角+2个5角得到2元
可以用7个1角+4个2角+1个5角得到2元
可以用8个1角+1个2角+2个5角得到2元
可以用9个1角+3个2角+1个5角得到2元
可以用11个1角+2个2角+1个5角得到2元
可以用13个1角+1个2角+1个5角得到2元
方案2(接力break)——只得到一种结果就结束
代码示例:
#include <stdio.h>
int main()
{
	int x;
	int one,two,five;
	int exit = 0;
	
	// scanf("%d",&x);
	x = 2;
	for (one = 1; one <= x*10; one++) {
		for (two = 1; two <= x*10/2; two++) {
			for (five = 1; five <= x*10/5; five++) {
				if (one + two*2 + five*5 == x*10) {
					printf("可以用%d个1角+%d个2角+%d个5角得到%d元\n",one,two,five,x);
					exit = 1;
					break;
				}
			}
			if (exit == 1){
				break;
			}
		}
		if (exit == 1){
			break;
		}
	}
	return 0;
}运行结果 :
可以用1个1角+2个2角+3个5角得到2元
方案3——goto语句
代码示例:
#include <stdio.h>
int main()
{
	int x;
	int one,two,five;
	
	// scanf("%d",&x);
	x = 2;
	for (one = 1; one <= x*10; one++) {
		for (two = 1; two <= x*10/2; two++) {
			for (five = 1; five <= x*10/5; five++) {
				if (one + two*2 + five*5 == x*10) {
					printf("可以用%d个1角+%d个2角+%d个5角得到%d元\n",one,two,five,x);
                goto out;
				}
			}
		}
	}
out:
	return 0;
}注:只在多重内循环需要跳转到最外侧的场景下使用goto语句,其他场景都不要去使用goto语句。因为goto语句破坏了程序结构性,难查错
今日小 tip:
if 语句只会在乎0与非0,为0则不执行,不为0则执行
以下代码段的输出是:
int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) continue; sum += i; } printf("%d\n", sum); //2+4+6+8 20

各位学习C语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。
我的C语言专栏:C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客
创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。


















