#include <stdio.h>
#include <math.h>
int main()
{
for(int n=2;n<7;n++){
int mask,a,b;
// scanf("%d",&n);
mask=pow(10,n-1);
while(mask<pow(10,n))
{
b=0;
mask++;//这一条语句最好放到最后, 因为最后输出的判断条件是 b==mask 在判断前mask最好不要改变,这样做相当于少判断了一个数是不是水仙花数
a=mask;
for(int i=1;i<7;i++)
{
b+=pow(a%10,n);
a/=10;
}
if(b==mask)printf("%d\n",b);
}
}
return 0;
}
就一个main方法用什么多线程呢
public class Answer7746907{
public static void main(String[] args) {
for(int n=2;n<7;n++){
int mask,a,b;
// scanf("%d",&n);
mask=(int)Math.pow(10,n-1);
while(mask<Math.pow(10,n))
{
b=0;
mask++;//这一条语句最好放到最后, 因为最后输出的判断条件是 b==mask 在判断前mask最好不要改变,这样做相当于少判断了一个数是不是水仙花数
a=mask;
for(int i=1;i<7;i++)
{
b+=Math.pow(a%10,n);
a/=10;
}
if(b==mask){
System.out.println(b);
}
}
}
}
}
public static void main(String[] args) {
for(int n=2;n<7;n++){
int finalN = n;
new Thread(()->{ int mask,a,b;
mask= (int) Math.pow(10, finalN -1);
while(mask<(int) Math.pow(10, finalN))
{
b=0;
mask++;//这一条语句最好放到最后, 因为最后输出的判断条件是 b==mask 在判断前mask最好不要改变,这样做相当于少判断了一个数是不是水仙花数
a=mask;
for(int i=1;i<7;i++)
{
b+=(int) Math.pow(a%10, finalN);
a/=10;
}
if(b==mask){
System.out.println(b);
}
} });
}
}
你要的转成java+多线程
但是你这里本来没有实现水仙花吧?要我帮你实现么?
//创建线程池,含四个固定大小线程
ExecutorService pool = Executors.newFixedThreadPool(4);
pool.execute(new Runnable() {
@Override
public void run() {
for(int n=2;n<7;n++){
double mask,a,b;
// scanf("%d",&n);
mask=Math.pow(10,n-1);
while(mask<Math.pow(10,n))
{
b=0;
mask++;//这一条语句最好放到最后, 因为最后输出的判断条件是 b==mask 在判断前mask最好不要改变,这样做相当于少判断了一个数是不是水仙花数
a=mask;
for(int i=1;i<7;i++)
{
b+=Math.pow(a%10,n);
a/=10;
}
if(b==mask)
System.out.println(b);
}
}
}
});