js的一些较为常见的语句算法题
下面各题解法可能存在一些时间和空间复杂度问题,有些没有做到最优化,还请谅解!!!
1、用for循环实现10的阶乘。
//使用for循环方法解答
var num = 10
var sum = 1;
var str = '';
for(var i=10;i>=1;i--){
sum *= i;
if(i == 1){
str += i;
}else{
str += i+'*';
}
}
console.log(num+'! = '+str+' = '+sum);
2、打印九九乘法表
for(var i=1;i<=9;i++){
var str = '';
for(var j=1;j<=i;j++){
str += i+'*'+j+'='+i*j+'\t';
}
console.log(str);
}
3、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?【该处时间复杂度相对较大,代码仅供参考】
var n =10;
var str = '';
for(var i=1;i<=n;i++){
for(var j=1;j<=n;j++){
if(j != i){
for(var k=1;k<=n;k++){
if(k != i && k != j){
str = str+i+j+k+'\t';
}
}
}
}
}
console.log(str);
4、判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)
// console.log(Math.sqrt(101)); //101开平方
var str = '';
var count = 0;
for(var i=101;i<=200;i++){
var flag = true;
for(var j=2;j<=Math.sqrt(i);j++){
if(i%j == 0){
//不是质数
var flag = false;
break; //节省运算时间,后面循环不需要再执行了
} }
if(flag){
str += i+'\t';
count++;
}
}
console.log('101~200之间有'+count+'个素数\n分别为:\n'+str);
5、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
// console.log(Math.pow(10,3)); //计算10的三次方
for(var i=100;i<1000;i++){
var hundred = parseInt(i/100);
var ten = parseInt((i-hundred*100)/10);
var unit = i-hundred*100-ten*10;
// console.log('................');
var sum = Math.pow(hundred,3)+Math.pow(ten,3)+Math.pow(unit,3);
if(sum == i){
console.log(i);
}
}
6、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
var num = 90;
var str = '';
for(var i=2;i<=num;i++){
// console.log(i);
if(num == i){
str += i;
}
while(num != i){
if(isPrime(i)){
// console.log(i);
if (num%i == 0) {
num /= i;
str += i+'*';
}else{
break;
}
}else{
break;
}
}
}
console.log(str); //判断一个数是否为素数
// console.log(isPrime(4)); 测试isPrime()函数
function isPrime(n){
var flag = true;
for(var i=2;i<=Math.sqrt(n);i++){
if(n%i == 0){
flag = false;
}
}
return flag;
}
7、求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
/*
辗转相除法的算法为:首先将 m除以 n(m>n)得余数 r,再用余数 r 去除原来的除数,
得新的余数,重复此过程直到余数为 0时停止,此时的除数就是m 和 n的最大公约数。
求 m和 n的最小公倍数: m和 n的积除以(m和 n 的最大公约数)。
*/
function gcdLcm(m,n){
var mn = m*n;
var r = m%n;
while(r != 0){
r = m%n;
m = n;
n = r;
}
console.log('最大公约数为:'+m+'\t最小公倍数为:'+mn/m);
}
gcdLcm(100,40)
8、求1000以内的完全数(若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。)
// var sum = 0;
for(var i=1;i<=1000;i++){
var sum = 0;
for(var j=1;j<=i;j++){
if(i%j == 0 && i!=j){
sum += j;
// console.log(sum);
}
}
if(sum == i){
console.log(i);
}
}
js的一些较为常见的语句算法题的更多相关文章
- JS中几种常见的数组算法(前端面试必看)
JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ f ...
- js中字符和数组一些基本算法题
最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping 这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法 ...
- 19道常见的JS面试算法题
最近秋招也做了多多少少的面试题,发现除了基础知识外,算法还是挺重要的.特意整理了一些常见的算法题,添加了自己的理解并实现. 除此之外,建议大家还可以刷刷<剑指offer>.此外,左神在牛客 ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
- 解决死锁之路3 - 常见 SQL 语句的加锁分析 (转)
出处:https://www.aneasystone.com/archives/2017/12/solving-dead-locks-three.html 这篇博客将对一些常见的 SQL 语句进行加锁 ...
- js 中的算法题,那些经常看到的
js中遇到的算法题不是很多,可以说基本遇不到.但面试的时候,尤其是一些大公司,总是会出这样那样的算法题,考察一个程序员的逻辑思维能力.如下: 1.回文. 回文是指把相同的词汇或句子,在下文中调换位置或 ...
- 高性能MySql进化论(十一):常见查询语句的优化
总结一下常见查询语句的优化方式 1 COUNT 1. COUNT的作用 · COUNT(table.filed)统计的该字段非空值的记录行数 · ...
- 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】
首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...
- 常见的排序算法总结(JavaScript)
引言 排序算法是数据结构和算法之中的基本功,无论是在笔试还是面试,还是实际运用中都有着很基础的地位.这不正直七月,每年校招的备战期,所以想把常见的排序算法记录下来.在本篇文章中的排序算法使用 Java ...
随机推荐
- mac jq for json format
mac jq #1.安装 brew install jq #2.创建文件 echo '{"name": "Ruby"}' > ./test.json #3 ...
- vue中axios使用一:axios做拦截器
转载请注明出处: 项目中用到了单点登录,依赖的公司通用的jar包,且项目为前后端分离的方式,为了管理系统的所有请求和 超时管理,用到了axios,做前端请求拦截,并做管理. 其有以下特点: axios ...
- Flutter中极光推送的使用----jpush_flutter
原文地址:https://www.cnblogs.com/niceyoo/p/11095994.html 1.申请极光账号和建立应用 极光推送的官方网址为:https://www.jiguang.cn ...
- MySQL数据类型:UNSIGNED注意事项(转)
原文地址:https://www.cnblogs.com/blankqdb/archive/2012/11/03/blank_qdb.html 1. UNSIGNED UNSIGNED属性就是将数字类 ...
- 在nginx环境下搭建https服务,代理到本地web项目
安装过程略. 1.证书准备 本地调试,可以安装自签名证书,安装方法参考https本地自签名证书添加到信任证书访问 2.修改配置文件 将上面的配置文件拷贝到conf目录,添加或者修改节点如下 http{ ...
- 使用vs code开发.net core2.2时OmniSharp.MSBuild.ProjectLoader无法解析"xxx"的解决方法
如图: 都是常用的nuget包呢,怎么无法解析呢? 第一反应是环境问题,果断搜索,baidu.google.bing.github一顿好搜啊,竟没有找到答案,看来是掉进了一个黄金坑! 重装vscode ...
- ASP.Net validator
<asp:TextBox ID="txtTransitDays" runat="server"></asp:TextBox> <a ...
- k8s-ingress安装
一.编写nginx-ingress-controller.yaml文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name ...
- POJ-图论-最短路模板(邻接矩阵)
POJ-图论-最短路模板 一.Floyd算法 刚读入数据时,G为读入的图邻接矩阵,更新后,G[i][j]表示结点i到结点j的最短路径长度 int G[N][N];//二维数组,其初始值即为该图的邻接矩 ...
- HTML5自定义select标签样式的方法
HTML5自定义select标签样式的方法 -webkit-appearance: none; 这个东西可以隐藏箭头 不过手机端就直接 设置透明度为0就行了(如果这种做法比前面个要麻烦点 毕竟还要对他 ...