自学C语言 Day 8 //打印素数实现、goto语句使用

本文通过两个示例展示了如何优化算法以提高效率。第一个示例是改进的素数检测算法,利用平方根减少计算负载。第二个示例是使用`goto`语句实现的自动关机程序,用户输入特定字符串可取消关机。这些实例探讨了程序优化和系统命令的实用技巧。
摘要由CSDN通过智能技术生成

Test1.打印素数

#define _CRT_SECURE_NO_WARNINGS 1;
#include <stdio.h>
int main()
{
	int input = 0;
	int input_1 = 0;
	int n = 0;
	scanf("%d", &n);
	for ( input = 2; input <= n; input++)
	{
		for ( input_1 = 2; input_1 < input; input_1++)
		{
			if (input % input_1 == 0)
			//input_1<input用input之前所有数和input取余,
			//如果可以整除就说明不是素数跳出循环(可优化部分)
			{
				break;
			}
		}
		if (input == input_1)
		{
			printf("prime number:%d\n", input);
		}
	}
	return 0;
}

//optimization
#define _CRT_SECURE_NO_WARNINGS 1;
#include <stdio.h>
#include <math.h>//使用sqrt函数需要调用的头文件。
int main()
{
	int input = 0;
	int n = 0;
	scanf("%d", &n);
	for (input = 2; input <= n; input++)
	{
		int input_1 = 0;
		int mark = 1;//标记
		for (input_1 = 2; input_1 <= sqrt(input); input_1++)
		//sqrt(square root calculations)计算平方根函数
		//思维:假设要判断18是不是素数,因为18=3*6=2*9,
		//假设我们运行时已经发现18可以被3整除了,
		//就可以直接结束判断不需要再去判断18能不能被6整除。
		//也就是说当发现了一个数的小除数就不用再去判断大除数,
		//又因为小除数肯定小于当前数的平方根,
		//因此我们就可以直接判断小于该数平方根下的数
		//就可以大大减少计算机的运行负载从而提高速率。
		{
			if (input % input_1 == 0)
			{
				mark = 0;//当判断为非素数时标记记0.
				break;
			}
		}
		if (mark == 1)//判断标记是否为1,就可以判断是否是素数。
		{
			printf("prime number:%d\n", input);
		}
	}
	return 0;
}

goto语句

无条件转移语句(使用的比较少)
goto 记号;
记号 :(位置为跳转位置)

int main()
{
again:
	printf("fku ");
	goto again;
	return 0;
}//死循环了

Test2.用goto实现自动关机

#include <stdlib.h>//调用system函数需要的头文件
#include <string.h>//调用strcmp函数需要的头文件
int main()
{
	system("shutdown -s -t 60");
//system函数执行系统命令
//常见shutdown命令有:
//shutdown -a 取消关机
//shutdown -s 关机
//shutdown -f 强行关闭应用程序
//shutdown -m \\计算机名 控制远程计算机
//shutdown -i 显示“远程关机”图形用户界面,但必须是Shutdown的第一个参数
//shutdown -l 注销当前用户
//shutdown -r 关机并重启
//shutdown -s -t 时间 设置关机倒计时
//shutdown -r -t 时间  设置重新启动倒计时
//shutdown -h 休眠
	char arr[16] = {0};
again:
	printf("enter Icanmakeit\n");
	scanf("%s", arr);
	if (strcmp("Icanmakeit", arr) == 0)
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值