积木首页 - 学院 - 软件测试 - 技术百科 - 问答 - 黄页 - 手册 - 站长工具 - 社区
登录 | 注册
积木技术社区 » C/C++ » 求立方和
打印 楼主:wangsiquan 发表于 2011-05-31 09:39 [回复26次/有效25个,浏览389次]

求立方和

用C语言编一个求1到1000的立方的和,((注意int型肯定不行)
2楼 发表于 2011-05-31 09:50
#include
void main()
{
int a,b,c,d,i,j;
int x,y;
for(i=10;i<100;i++)
{
a=i/10;
b=i%10;
for(x=2;x{
if(0==i%x)
{
break;
}
if(x==i)
{
if(0==(b*10+a)%x)
{
break;
}
}
}
}
for(j=99;j>9;j--)
{
c=j/10;
d=j%10;
for(y=2;y{
if(0==j%y)
{
break;
}
if(j==y)
{
if(0==(d*10+c)%y)
{
break;
}
}
}
}
printf("绝对素数之差为%d\n",j-i);
}
3楼 发表于 2011-05-31 10:03
int64
4楼 发表于 2011-05-31 10:04
如果楼主想做更大的,比如1到1000000的立方和,可以参考这个帖子:
http://topic.gimoo.net/u/20110425/15/fea5c871-a8d1-46c1-a7d1-6ca61506fbc5.html?seed=1269684621&r=72968375#r_72968375
的第4楼和第5楼的回复,给出了大数的四则运算函数。
5楼 发表于 2011-05-31 10:38
转换成字符串是好办法!~
6楼 发表于 2011-05-31 10:58
可以考虑unsigned long long ,不过这不是根本的方法,根本的解决方法还是用数组!!!
7楼 发表于 2011-05-31 11:16
C-free没用过,试试下面:
C/C++ code
#include
long long int sum,i;
void main() {
sum=0LL;
for (i=1LL;i<=1000LL;i++) sum+=i*i*i;
printf("%lld\n",sum);
}
8楼 发表于 2011-05-31 11:28
long long是8bytes的,有效数字的位数也应该可以装下1到1000的立方和。
C/C++ code
#include
using namespace std;
long long power3(int x)
{
long long along = x * x * x;
return along;
}
int main(int argc, char* argv[])
{
long long longsum = 0;
for(int i = 1; i <= 1000; ++i)
longsum += power3(i);
cout << longsum << endl;
return 0;
}
9楼 发表于 2011-05-31 11:35
嗯,数组可以
10楼 发表于 2011-05-31 11:54
最好的方法还是数组啊
11楼 发表于 2011-05-31 11:55
先用公式:double sum = pow(n*(n+1),2)/4 + 0.5;
再去整数部分转为字符串
12楼 发表于 2011-05-31 11:57
这样可能效率更高:
__int64 sum,i;
sum=0i64;
for (i=1i64;i<=1000i64;i++) sum+=i*i*i;
printf("%I64d\n",sum);
13楼 发表于 2011-05-31 12:17
用数列求和公式可以不
14楼 发表于 2011-05-31 12:27
定义为long int型不就可以了吗?
15楼 发表于 2011-05-31 12:33
long long i = 1234567890 * 1234567890;编译时会有警告信息:warning: integer overflow in expression。1234567890是int型,两个int型相乘的表达式仍然是int型,而乘积已经超过int型的取值范围了,因此提示计算结果溢出。如果改成long long i = 1234567890LL * 1234567890;,其中一个常量是long long型,另一个常量也会先转换成long long型再做乘法运算,两数相乘的表达式也是long long型,编译器就不会报警告了。
这是在Linux书上的 不知道会出现这个问题吗
16楼 发表于 2011-05-31 12:36
用栈和数组哪个更优些
17楼 发表于 2011-05-31 13:15
用数组吧
18楼 发表于 2011-05-31 13:36
ls 的即害了lz,又断人财路 ...
19楼 发表于 2011-05-31 13:36
19楼我为什么在C-free上编译时会出现parse error before '64'的错误呢?
20楼 发表于 2011-05-31 13:57
用char数组~
C/C++ code
char result[200]
for ( int i=1; i<=1000; ++i )
{
用itoa函数把i的立方转换成字符串
for ( int j=199; j>=0; --j )
{
逐个加到result数组,有进位则向左边一位进一
}
}
标题:
内容:
网址导航成语大全积木 TinyMCE 服务邮箱: Gimoohr(#)gmail.com
Copyright © 2008 Gimoo.Net  京ICP备05050695号