首页 > 分享 > C语言—NYOJ上的几道水题

C语言—NYOJ上的几道水题

C语言—NYOJ上的几道水题

上周做完了NYOJ上的语言入门80题,虽然都是难度比较低的水题,但是有些较好的题还是想拿出来和大家分享一下,其中并不涉及数据结构和算法,希望能对大家有帮助。

1. 素数距离问题

描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入
第一行给出测试数据组数N(0 < N <= 10000)
接下来的N行每行有一个整数M(0 < M < 1000000),
输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。

- 解题思路:首先判断输入的这个数是不是素数(特殊情况:当这个数是1时,离他最近的素数就是2,距离为1),如果是素数,则输出他本身,距离为1。如果这个数不是素数,在他的左边和右边分别找到距离最近的素数,并且比较哪个更近,若距离相等则输出左边的值和距离。
注意点:
- 1. 分清break和continue的区别
- 2.判断素数的方法,注意特殊值

代码:

#include<stdio.h> #include<math.h> #include<stdlib.h> int main(){ int n,x; int i,j; scanf("%d",&n); while(n--){ int dis1,dis2; int x1,x2,k; scanf("%d",&x); for(i=2;i<=sqrt(x);i++) if(x%i==0) break; if(x==1){ printf("2 1n"); continue; } if(i>sqrt(x)){ printf("%d 0n",x); continue; } for(i=x-1;i>=2;i--){ for(j=2;j<=sqrt(i);j++) if(i%j==0) break; if(j>sqrt(i)){ x1=i; break; } } for(i=x+1;;i++){ for(j=2;j<=sqrt(i);j++) if(i%j==0) break; if(j>sqrt(i)){ x2=i; break; } } k=((x-x1)<=(x2-x))?x1:x2; printf("%d %.0fn",k,fabs(x-k)); } return 0; }

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849

2. 蛇形填数

描述
在n*n方陈里填入1,2,…,n*n,要求填成

相关知识

C语言入门教程
这道题是给使用C/C++语言的同学准备的。使用其他语言的同学,可能需要花点功夫思
C语言:输出所有的水仙花数
传教士问题c语言
【C语言学习】编写一个C程序,输入华氏温度,输出相应的摄氏温度。转换公式是:c=(f
C语言情人节玫瑰花代码
【几道数学题…………有点难度…………1.=1(假设的啊~原题不是)则代数式x4+5x3
C语言烟花代码,C语言实现烟花表白代码
C语言基础练习①——水仙花数
【C语言】预处理(预编译)详解(上)(C语言最终篇)

网址: C语言—NYOJ上的几道水题 https://m.huajiangbk.com/newsview1757582.html

所属分类:花卉
上一篇: 水仙有何特性?分哪几类?
下一篇: 梦见水仙花开是什么意思