C#程序设计

编一个程序,输入一个正整数,判断它是否为素数。如不是,则输出其所有正约数。

题目

编一个程序,输入一个正整数,判断它是否为素数。如不是,则输出其所有正约数。

参考答案和解析
正确答案: Console.WriteLine("请输入一个正整数:");
uinti,n,flag;
boolf=true;
n=uint.Parse(Console.ReadLine());
//uint.TryParse(Console.ReadLine(),outn);
for(i=2;i{
if(n%i==0){f=false;break;}
}
if(f)Console.WriteLine("{0}是一个素数。",n);
else
{
Console.Write("{0}不是一个素数。/n{1}=",n,n);
i=2;
flag=0;
while(i<=n)
{
while(n%i==0)
{
n=n/i;
if(flag!=0)Console.Write(’*’);
flag=1;
Console.Write("{0}",i);
}
i++;
}
}
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

( 9 ) 下面的程序执行时 , 可以从键盘输入一个正整数 , 然后把该数的每位数字按逆序输出 。 例如 : 输入 7685 ,则输出 5867 ,输入 1000 ,则输出 0001 。请填空。

Private Sub Command1_Click()

Dim x As Integer

x=InputBox( “ 请输入一个正整数 ” )

While x>_ _[11] ___

Print x Mod 10;

x=x\10

Wend

Print__ [12] __

End Sub


正确答案:

第2题:

下列程序的功能是输入一个整数,判断是否是素数,若为素数,则输出1,否则输出0,请填空。main(){ int i, x, y=1; scanf("%d", &x); for(i=2; i<=x/2; i++) if{ y=0; break;} printf("%d\n", y);}


正确答案:x%i == 0。
在本题中,题目给出了程序段的功能是输入一个整数,判断是否是素数,若为素数,则输出1,否则输出0。这里我们首先要知道什么样的数是素数。素数即质数,是指在一个大于1的自然数中,除了1和自身外,不能被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数,那么它与除1和本身外的任何整数进行取余运算,其结果都不为0。
在程序中,首先定义三个整型变量,将y的值赋为1,然后从键盘输入的一个数初始化变量x,根据题目要求,这个输入的数即为被处理的整数。然后通过一个循环来判断这个被处理的整数是否为素数,本题需要填空的地方正是循环体中一个条件判断语句的条件,如果条件为真,则将变量y赋值为0,然后跳出循环。从后面的输出语句和题目要求我们不难推断出:如果变量y=0,说明被处理的数不是素数,根据上面对素数特性的分析,此时x%i应该等于0。因此,本题的答案是x%i == 0。

第3题:

编写一个求出一维数组a[10]中所有素数之和的程序,判断一个数是否是素数由子函数完成,求和由主函数完成。

例如:

若int a[10]={2,6,13,8,24,27,31,40,22,12},则和为46


答案:

#include<stdio.h>

//判断是否是素数 返回0表示不是素数,1表示是素数
int isSushu(int n)
{
    if(n<=1)
        return 0;

    int i;

    for(i=2;i<n;++i)
    {
        if(n%i == 0)
        return 0;
    }
    return 1;

}

int main()
{
    int a[10] = {2,6,13,8,24,27,31,40,22,12};
    int i;
    int sum=0;
    for(i=0;i<10;++i)
    {

        if(isSushu(a[i]))

            sum += a[i];
    }
    printf("sum=%d",sum);
    return 0;
}

第4题:

利用穷举法编写一个算法判断给定的正整数n是否是素数的程序,即判断n是否只能被1和自身整除。


正确答案: main( )
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1)
printf("%d is a prime number/n",m);
else
printf("%d is not a prime number/n",m);
}

第5题:

编写程序,判断一个大于等于3的自然数是否为素数。


正确答案:程序代码如下: CLEAR INPUT“请输入自然数(>=3):” TO n f=0 i=2 DO WHILE i=INT(SQRT(n)) IF MOD(ni)>0 i=i+1 LOOP ELSE f=1 EXIT ENDIF ENDDO IF f=0 ? STR(n3)+“是素数” ELSE ? STR(n3)+“不是素数” ENDIF RETURN
程序代码如下: CLEAR INPUT“请输入自然数(>=3):” TO n f=0 i=2 DO WHILE i=INT(SQRT(n)) IF MOD(n,i)>0 i=i+1 LOOP ELSE f=1 EXIT ENDIF ENDDO IF f=0 ? STR(n,3)+“是素数” ELSE ? STR(n,3)+“不是素数” ENDIF RETURN

第6题:

下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。

main()

{int i, x, y=1;

scanf("%d", &x);

for(i=2; i<=x/2; i++)

if【14】{ y=0; break;}

printf("%d\n", y);

}


正确答案:
(x%i==0)

第7题:

下面的程序执行时,可以从键盘输入一个正整数,然后把该数的每位数字按逆序输出。例如:输入7685,则输出5 8 6 7;输人1000,则输出0 0 0 1。请填空。 Private Sub Command1_Click Dim x As Integer X=InputBox(“请输入一个正整数”) While x> 【11】 Print x Mod 10; x=x\10 Wend Print 【12】 End Sub


正确答案:
void Base::fun ; virtual display==0;

第8题:

请编一个函数int fun(int a),它的功能是:判断a是否是素数,若a是素数,返回1;若不是素数,返回0。A的值由主函数从键盘读入。


正确答案:
#include”stdio.h”
int fun(int a)
{int I;
if(a==2) return 1; I=2;
while((a%I)!=0I<=sqrt((float)a))
I++;
if(a%I==0)
{printf(“%d is not a prime!”,a);
return 0; }
printf(“%d is a prime!”,a);
return 1; }
main
{int x;
printf(“\n please enter a number:”);
scanf(“%d”,&x);
printf(“%d\n”,fun(x)); }

第9题:

所谓“降序数”是指一个自然数的低位数字不大于高位数字的数。例如:64,55,321都认为是降序数,但是623不是降序数。一位数字被认为是降序数。编一个程序,输入一个数,判定它是否为降序数。该程序是循环执行的,当输入的数为0时,则退出程序运行。


正确答案: inti,j,m,n;
boolpos;
while(true)
{
n=-1;
while(n<=0)
{
if(n==0)return;
Console.WriteLine("请输入一个正整数或者0:");
n=int.Parse(Console.ReadLine());
}
if(n<10)pos=true;
else
{
m=n;
i=0;
pos=true;
while(m>0)
{
j=m%10;
m=m/10;
if(i>j)
{
pos=false;
break;
}
i=j;
}
}
if(pos)Console.WriteLine("{0}是降序数。",n);
elseConsole.WriteLine("{0}不是降序数。",n);
}

第10题:

利用穷举法编写一个算法判断给定的正整数n是否是素数,即判断n是否只能被1和自身整除。


正确答案: #include“math.h”
#include“stdio.h”
void main()
{
int m,i,k;
scanf("%d",&m);
ksqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
printf("%d is a prime number/n",m);
else
printf("%d is not a prime number/n",m);
}