求大神帮我优化一下算法和提供一下一道题的思路。谢谢
#include<stdio.h>#include<math.h>
int main()
{
int i,n,flag,temp,sum=0,num=0;
printf("请输入所要求的水仙花数位数(1<=n<=10):\n");
scanf("%d",&n);
while(n<1||n>10)
{
printf("位数不正确!请重新输入(1<=n<=10):\n");
scanf("%d",&n);
}
flag=pow(10,n);
for(i=flag/10;i<flag;i++)
{
sum=0;
temp=i;
while(temp!=0)
{
sum+=pow((temp%10),n);
temp/=10;
}
if(sum==i)
{
printf("%d\n",i);
num++;
}
}
printf("%d位水仙花数有%d个\n",n,num);
return 0;}9位数和10位数的输不出来,8位数输出来也比较慢。
帮我看一下这道题。编程验证6-1000以内“哥德巴赫猜想”是否成立。“哥德巴赫猜想”:任何大于2的偶数都可以表示成两个素数之和。
要求同时输出到文件和屏幕,输出形式:
4= 2+ 2 6=3+3 8=3+5 10=3+7 12= 5+7
14= 3+11……
每行输出6组数据,排列整齐。
谢谢。