勾股数

求勾股数:

      穷举法,a,b,c均从1-1000一个一个穷举。

源代码;

public class Gougu {
	public static void main(String args[]){
		System.out.println("勾股数如下:");
		long begin=System.currentTimeMillis();
		gougu(300);
		long end=System.currentTimeMillis();
		System.out.printf("耗时"+(end-begin)+"ms");
	}
    //穷举法算勾股数
	private static void gougu(int max) {
		//减少一个循环
		for(int i=1;i<=max-2;i++){
			for(int j=i+1;j<=max-1;j++){
				int sum=i*i+j*j;
				int z=(int)(Math.sqrt(sum));   //计算可能的勾股数
					if(z*z==sum&&z<=max){
						System.out.println(" "+i+" "+j+" "+z);
					}
			}
		}
	}
}
运行图:

勾股数如下:
 3 4 5
 5 12 13
 6 8 10
 7 24 25
 8 15 17
 9 12 15
 9 40 41
 10 24 26
 11 60 61
 12 16 20
 12 35 37
 13 84 85
 14 48 50
 15 20 25
 15 36 39
 15 112 113
 16 30 34
 16 63 65
 17 144 145
 18 24 30
 18 80 82
 19 180 181
 20 21 29
 20 48 52
 20 99 101
 21 28 35
 21 72 75
 21 220 221
 22 120 122
 23 264 265
 24 32 40
 24 45 51
 24 70 74
 24 143 145
 25 60 65
 26 168 170
 27 36 45
 27 120 123
 28 45 53
 28 96 100
 28 195 197
 30 40 50
 30 72 78
 30 224 226
 32 60 68
 32 126 130
 32 255 257
 33 44 55
 33 56 65
 33 180 183
 34 288 290
 35 84 91
 35 120 125
 36 48 60
 36 77 85
 36 105 111
 36 160 164
 39 52 65
 39 80 89
 39 252 255
 40 42 58
 40 75 85
 40 96 104
 40 198 202
 42 56 70
 42 144 150
 44 117 125
 44 240 244
 45 60 75
 45 108 117
 45 200 205
 48 55 73
 48 64 80
 48 90 102
 48 140 148
 48 189 195
 48 286 290
 49 168 175
 50 120 130
 51 68 85
 51 140 149
 52 165 173
 54 72 90
 54 240 246
 55 132 143
 56 90 106
 56 105 119
 56 192 200
 57 76 95
 57 176 185
 60 63 87
 60 80 100
 60 91 109
 60 144 156
 60 175 185
 60 221 229
 63 84 105
 63 216 225
 63 280 287
 64 120 136
 64 252 260
 65 72 97
 65 156 169
 66 88 110
 66 112 130
 68 285 293
 69 92 115
 69 260 269
 70 168 182
 70 240 250
 72 96 120
 72 135 153
 72 154 170
 72 210 222
 75 100 125
 75 180 195
 77 264 275
 78 104 130
 78 160 178
 80 84 116
 80 150 170
 80 192 208
 81 108 135
 84 112 140
 84 135 159
 84 187 205
 84 245 259
 84 288 300
 85 132 157
 85 204 221
 87 116 145
 88 105 137
 88 165 187
 88 234 250
 90 120 150
 90 216 234
 93 124 155
 95 168 193
 95 228 247
 96 110 146
 96 128 160
 96 180 204
 96 247 265
 96 280 296
 99 132 165
 99 168 195
 100 105 145
 100 240 260
 102 136 170
 102 280 298
 104 153 185
 104 195 221
 105 140 175
 105 208 233
 105 252 273
 108 144 180
 108 231 255
 110 264 286
 111 148 185
 112 180 212
 112 210 238
 114 152 190
 115 252 277
 115 276 299
 117 156 195
 117 240 267
 119 120 169
 120 126 174
 120 160 200
 120 182 218
 120 209 241
 120 225 255
 123 164 205
 126 168 210
 128 240 272
 129 172 215
 130 144 194
 132 176 220
 132 224 260
 133 156 205
 135 180 225
 136 255 289
 138 184 230
 140 147 203
 140 171 221
 140 225 265
 141 188 235
 144 165 219
 144 192 240
 147 196 245
 150 200 250
 153 204 255
 156 208 260
 159 212 265
 160 168 232
 160 231 281
 161 240 289
 162 216 270
 165 220 275
 168 224 280
 171 228 285
 174 232 290
 176 210 274
 177 236 295
 180 189 261
 180 240 300
 192 220 292
 195 216 291
 200 210 290
耗时7ms
数字范围比较小的时候可以直接暴力解决:

public class Gougu {
	public static void main(String args[]){
		gougu(10000);
	}
    //穷举法算勾股数
	private static void gougu(int max) {
		for(int i=1;i<=max;i++){
			for(int j=i+1;j<=max;j++){
				for(int z=j+1;z<max;z++){
					if(z*z==i*i+j*j){
						System.out.println(" "+i+" "+j+" "+z);
					}
				}
			}
		}
	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值