编程计算1^1+2^2+3^3+4^4+5^5+……+20^20
Posted Pistachiout
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程计算1^1+2^2+3^3+4^4+5^5+……+20^20相关的知识,希望对你有一定的参考价值。
1.用对分法解方程 x^(1/2)=cos(x) (x>0)
a、先在纸上研究好算法
b、使用Math.sqrt(), Math.cos(),Math.PI;
c、实型数的比较方法(不能用相等,要用差的绝对值很小作为判断)
d、大致的结果区间
e、怎么结束,常量(到怎样的精度则停止循环计算)(Math.abs())
f、取中值
g、例子:-1.3*X+2=sinX
ublic static void main(String[] args) {
// TODO Auto-generated method stub
double minNum=0d,maxNum=1d,xNumber=0.5d,sqrt,cos,absSubstractiveSum=1d;
for(;absSubstractiveSum>0.0000001;)
{sqrt=Math.sqrt(xNumber);
cos=Math.cos(xNumber);
absSubstractiveSum=(double)Math.abs(sqrt-cos);
if(sqrt-cos<0)
{minNum=xNumber;
xNumber=(minNum+maxNum)/2;}
else
{maxNum=xNumber;
xNumber=(minNum+maxNum)/2;}
}
System.out.println(xNumber);
}
}
2. 用欧几里德辗转相除法求两个正整数的最大公约数
public class Ogimed {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=52,b=4;
System.out.println(getGCD(a,b));
}
static int getGCD(int a,int b) {
if(a%b==0)
return b;
return getGCD(b,a%b);
}
}
3.利用级数展开式计算cos(x)
a、注意循环控制的设计(结束条件)
b、反复查找了源程序,没有问题,但运行的结果就是不对,试着从其他方面找原因
c、可以和Math.cos()的结果做一个比较
d、不用数组。到网上找通项公式;
e、结束条件,常量
public class CosX {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=0;
System.out.println(cos(x));
}
public static double cos(double x)
{
double sumOfItem=1;
double item=x;
double EPSILON=0.0000000000000001;
int num=1;
while(Math.abs(item)>EPSILON)
{ item=-item*x*x/((2*num)*(2*num-1));
sumOfItem+=item;
num++;
}
return sumOfItem;
}
}
4. 编程计算1000以内的质数(输出格式:一行10个,按列右对齐)
a、注意设计好“信号变量”,isPrime
b、Switch((Integer.toString(intWorker)).length())
c、如何按列右对齐
5. 将任意一个字符串颠倒排列输出
a、引用正确的类及其方法
b、主要是合理运用String或StringBuffer的方法以及循环控制
c、学习使用length()、charAt()等函数
d、研究各种可能的情况
public class primeNumInside1000 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i,j;
int num=0;
for(i=1;i<=1000;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(i==j)
{String str=Integer.toString(j);
System.out.printf("%4s",str);
num++;};
if(num==10)
{num=0;
System.out.println();
}
}
}
5.将任意一个字符串颠倒排列输出
a、引用正确的类及其方法
b、主要是合理运用String或StringBuffer的方法以及循环控制
c、学习使用length()、charAt()等函数
d、研究各种可能的情况
public class reverseString {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer str=new StringBuffer("anihC yadhtriB yppaH");
StringBuffer str2=new StringBuffer("");
int length=str.length();
for(int number=length;number>0;number--)
{ char temp=str.charAt(number-1);
str2.append(temp);
}
System.out.println(str2);
}
}
6. 符号三角形(输入--+-++-+)(第一行从第10列开始,整个三角形右对齐)
a、想办法控制好输出的格式
b、什么是符号三角形
c、如何控制起始位置
d、字符的比较,是否可以考虑用异或
public class symbolicTriangle {
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] line=new char[]{' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','+','-','+','+','-','+'};
System.out.println(line);
for(int i=9;line[15]!=' ';i++)
{ for(int j=16;j!=i;j--)
{int flag = line[j]^line[j-1];
if(flag==0)
{line[j]='+';}
else
{line[j]='-';}
}
line[i]=' ';
System.out.println(line);
}
}
}
7、编程计算11+22+33+44+55+……+2020
b、注意结果的大小,体会数据的范围;
c、需要用到数组;
d、-----------------------------------
e、不能在运算过程中使用实型数
f、使用数组,一个数组元素装一位
g、要使用辅助方法。
public class PowersumForm1to20 {
public static void main(String[] args) {
// TODO Auto-generated method stub
sumOf20Power20();
}
public static void sumOf20Power20()
{
int[] sum=new int[50];
int[] temp;
sum[0]=5;
for(int i=3;i<=20;i++)
{
temp=nPowerN(i);
addToSum(temp,sum);
display(sum);
}
}
public static void carry(int[] anArray)
{
for(int i=0;i<anArray.length-1;i++)
{
anArray[i+1]+=anArray[i]/10;
anArray[i]%=10;
}
}
public static void addToSum(int[] anArray,int[] sumArray)
{
for(int i=0;i<sumArray.length;i++)
{
sumArray[i]+=anArray[i];
}
carry(sumArray);
}
public static int[] nPowerN(int aNumber)
{
int[] tempArray=new int[50];
tempArray[0]=aNumber;
carry(tempArray);
for(int i=0;i<aNumber-1;i++)
{
for(int j=0;j<tempArray.length;j++)
tempArray[j]*=aNumber;
carry(tempArray);
}
return tempArray;
}
public static void display(int[] anArray)
{
boolean isAllPrefixZero=true;
for(int i=anArray.length-1;i>=0;i--)
{
if(anArray[i]!=0)
isAllPrefixZero=false;
if(!isAllPrefixZero)
System.out.print(anArray[i]);
}
System.out.println();
}
}
以上是关于编程计算1^1+2^2+3^3+4^4+5^5+……+20^20的主要内容,如果未能解决你的问题,请参考以下文章
面试题_程序编写题_编程实现表达式1-2+3-4+5-6+….+n的计算结果_一列数的规则如下: 112358132134...... 求第30位数是多少_小明去商店买糖, 店主说糖是
有如下数列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,..计算并输出前1000项的和 要求:使用?
用python实现计算1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))类似的公式计算