public class T{ public T() { int n = 1; int all = 0; for (int i = 1; i <= 10; i++) { n *= i; all += n; } System.out.println("结果为:" + all); } } 觉得第二种可以这样做……效率高很多
// 求1+2+3+...+10000的和 public int get1(){ int sum=0; for(int i=1;i<10001;i++ ){ sum+=i; } return sum; }
// 求1!+2!+3!+...+10! 的和
public int get2(){ int sum=0; int mid=1; for(int i=1;i<11;i++){ mid*=i; sum+=mid; }
public class OddSum { public static void main(String[] args) { long result = 0; for(int i=1; i<=99; i+=2) { result += i; }
System.out.println("result=" + result); } } public class Factorial { public static void main(String args[]) { System.out.println(f(3)); }
public static int f(int n) { if(n == 1) { return 2; } else { return n*f(n-1); } } } public class PrimeNumberSum { public static void main(String args[]) { int sum = 0; for(int i=2; i<100; i++) { boolean b = true; for(int j=2; j<i; j++) { if(i % j == 0) { b = false; break; } } if(!b) {continue;} System.out.print(i + " "); sum += i; } System.out.println(); System.out.println("sum:" + sum); } }
public class TestSum { public static void main(String args[]) { int result = 0; for(int i=1; i<=10000; i++) { result += i; } System.out.println(result); } } public class Factorial { public static void main(String args[]) { System.out.println(f(3)); }
public static int f(int n) { if(n == 1) { return 1; } else { return n*f(n-1); } } } public class PrimeNumberSum { public static void main(String args[]) { int sum = 0; for(int i=2; i<100; i++) { boolean b = true; for(int j=2; j<i; j++) { if(i % j == 0) { b = false; break; } } if(!b) {continue;} System.out.print(i + " "); sum += i; } System.out.println(); System.out.println("sum:" + sum); } } 上面有些小错误
第一个很容易吧 就一个for循环就OK了
为什么没考虑溢出? 使用java中“大数”类。
int和long放的下那么大的数么?
你的数学老师已经被你气死了……static int sum(int n) { int sum = 0; for (int i = 1; i <= n; i++) { sum += i; } return sum; //return ((1 + n) * n) >> 1; }static int sumFrac(int n) { int sum = 0, tmp = 1; for (int i = 1; i <= n; i++) { sum += (tmp *= i); } return sum; }static int sumPrime(int n) { boolean[] flags = new boolean[n + 1]; flags[0] = flags[1] = true; int sum = 0; for (int i = 1; i <= n; i++) { if (!flags[i]) { sum += i; int j = i + i; while (j <= n) { flags[j] = true; j += i; } } } return sum; }
for(int i=0;i<10000;i++)
{
sun+=i;
}
System.out.println(sun);
//阶乘
int k=1;
int z=0;
for(int i=1;i<11;i++)
{
k=1;
for(int j=1;j<=i;j++)
{
k=k*j;
}
z=z+k;
}
System.out.println(z);
//素数
int k;
for(int i=2;i<101;i++)
{
for(int j=2;j<i,j++)
{
if(i%j==0)
{
break;
}
else if(j==i-1) {
k+=i
}
}
}
System.out.println(k);
)
思路就是这样,没跑过
public class T{ public T() {
int n = 1;
int all = 0;
for (int i = 1; i <= 10; i++) {
n *= i;
all += n;
}
System.out.println("结果为:" + all);
}
}
觉得第二种可以这样做……效率高很多
int sum=0;
for(int i=1;i<10001;i++ ){
sum+=i;
}
return sum;
}
// 求1!+2!+3!+...+10! 的和
public int get2(){
int sum=0;
int mid=1;
for(int i=1;i<11;i++){
mid*=i;
sum+=mid;
}
return sum;
}
// 求100以内的素数和
public int get3(){
int sum=0;
int i,j;
for(i=2;i<101;i++){
for(j=2;j<i;j++){
if(i%j==0){
break;
}
}
if(j==i){
sum+=i;
}
}
return sum;
}
求1!+2!+3!+...+10! 的和 是7楼barryhappy的方法,的确比4楼的方法好点。
代码都在我的机器上流过了,应该没有问题。
public class OddSum {
public static void main(String[] args) {
long result = 0;
for(int i=1; i<=99; i+=2) {
result += i;
}
System.out.println("result=" + result);
}
}
public class Factorial {
public static void main(String args[]) {
System.out.println(f(3));
}
public static int f(int n) {
if(n == 1) {
return 2;
}
else {
return n*f(n-1);
}
}
}
public class PrimeNumberSum {
public static void main(String args[]) {
int sum = 0;
for(int i=2; i<100; i++) {
boolean b = true;
for(int j=2; j<i; j++) {
if(i % j == 0) {
b = false;
break;
}
}
if(!b) {continue;}
System.out.print(i + " ");
sum += i;
}
System.out.println();
System.out.println("sum:" + sum);
}
}
public class TestSum {
public static void main(String args[]) {
int result = 0;
for(int i=1; i<=10000; i++) {
result += i;
}
System.out.println(result);
}
}
public class Factorial {
public static void main(String args[]) {
System.out.println(f(3));
}
public static int f(int n) {
if(n == 1) {
return 1;
}
else {
return n*f(n-1);
}
}
}
public class PrimeNumberSum {
public static void main(String args[]) {
int sum = 0;
for(int i=2; i<100; i++) {
boolean b = true;
for(int j=2; j<i; j++) {
if(i % j == 0) {
b = false;
break;
}
}
if(!b) {continue;}
System.out.print(i + " ");
sum += i;
}
System.out.println();
System.out.println("sum:" + sum);
}
}
上面有些小错误
就一个for循环就OK了
使用java中“大数”类。
你的数学老师已经被你气死了……static int sum(int n) {
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
//return ((1 + n) * n) >> 1;
}static int sumFrac(int n) {
int sum = 0, tmp = 1;
for (int i = 1; i <= n; i++) {
sum += (tmp *= i);
}
return sum;
}static int sumPrime(int n) {
boolean[] flags = new boolean[n + 1];
flags[0] = flags[1] = true;
int sum = 0;
for (int i = 1; i <= n; i++) {
if (!flags[i]) {
sum += i;
int j = i + i;
while (j <= n) {
flags[j] = true;
j += i;
}
}
}
return sum;
}
方法名应该是sumFact或者sumFactorial的,不是Frac第一题是循环求和,注释掉的是直接用求和公式
第二题就是一个循环,利用n!=n*(n-1)!
第三题用筛法,复杂度O(n)就可以了
我纠结,写了几年代码数学都忘了,res=n*(n+1)/2
大哥。