十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在程序的开头加入#include
成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,十载企业及个人网站建设经验 ,为成都1000多家客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,成都品牌网站建设,同时也为不同行业的客户提供成都网站建设、网站设计的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联建站。
下面是fun函数:
int
fun(int
mm,int
b[max])
{
int
i,mmm,n=0;
for(mmm=2;mmm=mm;mmm++)
{
for(i=2;i=sqrt(mmm);i++)
if(mmm%i==0)
break;
if(isqrt(mmm))
{
b[n]=mmm;
n+=1;
}
}
return
n;
}
分析:
如果mm=1,外循环不启动,直接返回n,此时n=0
如果mm=2,外循环启动,内循环i=sqrt(mmm)的条件不满足,不启动,内循环下面的判断条件满足,于是让b[n]=mmm,n+=1,即找到一个符合条件的素数,此时b[n]既b[0]=2,然后n+=1,表示符合条件的素数的个数加1
同样,当mm=3的时候,内循环由于条件不满足,是不会执行的,但是在内循环下面的条件判断都满足,所以会把结果保存在n和b[n]里面,这时,外循环要执行2次
当mm3时,内循环也会启动,但是要等内循环结束之后i的值满足条件的才是素数,程序的可靠信完全可以放心
刚刚又重新分析了一遍代码,稍微改了改,没问题了
/*
m = 900102
最接近的回文素数是1003001。
Press any key to continue
*/
#include stdio.h
#include math.h
int IsPalindromeNum(int num) {
char s[10],i = 0,j;
while(num 0) {
s[i] = num % 10 + '0';
num = num / 10;
i++;
}
s[i] = '\0';
i--;
for(j = 0;j (i + 1)/2;j++)
if(s[j] != s[i - j]) return 0;
return 1;
}
long gmval(int m) {
int i,j,flag;
if(m % 2 == 0) m++;
for(i = m;i 10 * m;i += 2) {
flag = 1;
for(j = 2;j = sqrt(i);j++) {
if(i % j == 0) {
flag = 0;
break;
}
}
if(flag IsPalindromeNum(i))
return i;
}
return 0;
}
int main() {
unsigned long m,res;
printf("m = ");
scanf("%d",m);
res = gmval(m);
if(res) printf("最接近%的回文素数是%d。\n",res);
else printf("在%d--%d范围内没有找到回文素数。\n",m,10 * m);
return 0;
}
1、首先打开vc6.0,新建一个控制台项目。
2、然后我们添加头文件。
3、然后我们添加main主函数。
4、然后我们定义6个long型变量。
5、然后我们使用scanf给input赋值。
6、然后我们分解个位、百位、千位、万位。
7、然后我们使用if判断。
8、然后我们运行程序,看看结果已经能判断回文数。
【题目】:
题目:如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,从给出的数据中统计出既是回文数又是素数的数(109)。
【思路分析】:
首先,你输入的是整数(x),计算机不能像人脑一样直接得到每个数位(数组a[10])。
所以,要先判断数位(n),然后只要数位数组中a[i]=a[n-i]即可。
关于素数,设置一个for循环,只要从1到x都不存在能整除x的数,就是素数了。
【代码如下】:
#include stdio.h
#includewindows.h
int main()
{
int
a[1000];
int
n;//输入整数的个数
printf("请输入整数的个数:\n");
scanf("%d",n);
int
i;
printf("请输入这%d个整数:\n",n);
for(i=0;in;i++)
scanf("%d",a[i]);
int
result_1;//值为1表示是回文数,值为0表示不是。
int
result_2;//值为1表示是质数,值为0表示不是。
int
palindrome(int y);//判断回文数的函数
int
prime(int y);//判断质数的函数
int
y;//y是要代入函数里的参数
int
num=0;//num用来计总共有几个符合条件的数
int
b[1000];//b[1000]是符合要求的数组
for(i=0;in;i++)
{
result_1=0;//先使初值=0。
result_2=0;
y=a[i];
result_1=palindrome(y);
result_2=prime(y);
if((result_1==1)(result_2==1))
{
b[num]=a[i];
num++;
}
}
if(num0)
{
printf("总共有%d个既是回文数又是质数的数:\n",num);
for(i=0;inum;i++)
printf("
%d",b[i]);
printf("\n");
}
else
printf("输入的整数均不符合要求\n");
system("pause");
return 0;
}
int palindrome(int y)
{
int
a[10];//a[10]表示y的各个数位的值
int
i=0;
while(y=1)
{
a[i]=y%10;//y%10就得到y的末位
y=y/10;//让倒数第二位变成了末位
i++;//i最后又自加了一次,所以i就表示y有多少位
}
int
j;
int
z=1;
for(j=0;j=(i-1)/2;j++)
{
if(a[j]!=a[(i-1)-j])
{
z=0;
break;
}
else
continue;
}
return
(z);
}
int prime(int y)
{
int
i,z;
z=1;
for
(i=2;iy;i++)
{
if(y%i==0)
{
z=0;
break;
}
else
continue;
}
return(z);
}
【测试数据】:
n = 168
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163
167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271
277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397
401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521
523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647
653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787
797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929
937 941 947 953 967 971 977 983 991 997
【测试结果】:
请输入整数的个数:
168
请输入这168个整数:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
59 61 67 71 73 79 83 89 97 101 103 1
07 109 113 127 131 137 139 149 151 157 163
167 173 179 181 191 193 197 199 211 2
23 227 229 233 239 241 251 257 263 269 271
277 281 283 293 307 311 313 317 331 3
37 347 349 353 359 367 373 379 383 389 397
401 409 419 421 431 433 439 443 449 4
57 461 463 467 479 487 491 499 503 509 521
523 541 547 557 563 569 571 577 587 5
93 599 601 607 613 617 619 631 641 643 647
653 659 661 673 677 683 691 701 709 7
19 727 733 739 743 751 757 761 769 773 787
797 809 811 821 823 827 829 839 853 8
57 859 863 877 881 883 887 907 911 919 929
937 941 947 953 967 971 977 983 991 9
97
总共有20个既是回文数又是质数的数:
2 3
5 7 11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929
请按任意键继续. . .