① C語言:從給出的數據中統計出既是迴文數又是素數的數
#include<stdio.h>
inthw(intn)
{inty=0,n1;
n1=n;
for(;n;n/=10)y=y*10+n%10;
returny==n1;
}
intprime(intn)
{inti;
for(i=2;i*i<=n;i++)
if(n%i==0)return0;
returnn>1;
}
intmain()
{intn,c='',num=0;
scanf("%d%c",&n,&c);
while(1)
{if(hw(n)&&prime(n))
num++;
if(c=='
')break;
scanf("%d%c",&n,&c);
}
printf("%d
",num);
return0;
}
② C語言問題 【函數與過程】迴文素數
【題目】:
題目:如果一個數從左邊讀和從右邊讀都是同一個數,就稱為迴文數。例如6886就是一個迴文數,從給出的數據中統計出既是迴文數又是素數的數(<109)。
【思路分析】:
首先,你輸入的是整數(x),計算機不能像人腦一樣直接得到每個數位(數組a[10])。
所以,要先判斷數位(n),然後只要數位數組中a[i]=a[n-i]即可。
關於素數,設置一個for循環,只要從1到x都不存在能整除x的數,就是素數了。
【代碼如下】:
#include <stdio.h>
#include<windows.h>
int main()
{
int
a[1000];
int
n;//輸入整數的個數
printf("請輸入整數的個數:\n");
scanf("%d",&n);
int
i;
printf("請輸入這%d個整數:\n",n);
for(i=0;i<n;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;i<n;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(num>0)
{
printf("總共有%d個既是迴文數又是質數的數:\n",num);
for(i=0;i<num;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;i<y;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
請按任意鍵繼續. . .